docx, xlsx, pptx の中に張り付けられた PNG ( BMP ) を JPEG へ変換して docx, xlsx, pptx のファイルサイズを削減する。
Rev. | 4 |
---|---|
Size | 4,521 bytes |
Time | 2017-09-28 21:10:20 |
Author | hor931101jp |
Log Message | Net framework 4.6 に変更
|
''' <summary>共通クラス</summary>
''' <remarks>Public Const/Shared 宣言用クラス。グローバルな変数、メソッドなどを定義する</remarks>
Public Class ClassMyCommon
''' <summary>プログラムタイトル</summary>
Public Const TITLE As String = "Office Image Reducer"
''' <summary>バージョン</summary>
Public Const VERSION As String = "01.01-170928"
''' <summary>メッセージ</summary>
''' <remarks>改行はvbCrLf</remarks>
Public Const OPENING_MSG As String _
= "Programmed by S.Hori" + vbCrLf _
+ vbCrLf _
+ "下記のWEBサーバから最新版を入手できます。" + vbCrLf _
+ "https://osdn.net/users/hor931101jp/pf/01/files" + vbCrLf _
+ "下記のSVNリポジトリからソースコードをチェックアウトできます。" + vbCrLf _
+ "svn://svn.pf.osdn.jp/h/ho/hor931101jp/01/tags" + vbCrLf _
+ vbCrLf _
+ "ここに docx xlsx pptx ファイルを1つずつドラックアンドドロップしてください。" + vbCrLf
''' <summary>メインフォームインスタンス宣言</summary>
Public Shared frmMain As FormMain
''' <summary>ログの管理インスタンス宣言</summary>
Public Shared Log As ClassLog
''' <summary>ミリ秒指定で待機する。</summary>
''' <param name="WaitTime">待機時間[ms]</param>
''' <remarks>引数を 50 以下にしても Windows の都合で 50ms 以上待機してしまうこともおこりうる</remarks>
Public Shared Sub WaitTickCount(ByVal WaitTime As Int32)
Dim StartTickCount As Int32 = Environment.TickCount And Int32.MaxValue
Dim NowTickCount As Int32
Do
Application.DoEvents()
System.Threading.Thread.Sleep(1)
NowTickCount = Environment.TickCount And Int32.MaxValue
Loop Until ((NowTickCount - StartTickCount) >= WaitTime)
End Sub
''' <summary>システムメニューを取得するAPI</summary>
Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Integer, ByVal bRevert As Integer) As Integer
''' <summary>システムメニューの項目を削除するAPI</summary>
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Integer, ByVal nPosition As Integer, ByVal wFlags As Integer) As Integer
''' <summary>メニューバーを再描画するAPI</summary>
Private Declare Function DrawMenuBar Lib "user32.dll" (ByVal hWnd As Integer) As Integer
''' <summary>フォームの「右上コントロールボックス」と「左上アイコンのシステムメニュー」のカスタマイズを行う。</summary>
''' <param name="f">対象とするフォーム</param>
Public Shared Sub FormControlBoxCustomize(ByVal f As Form)
'Const SC_SIZE = &HF000& 'システムメニューの「サイズ変更」
'Const SC_MOVE = &HF010& 'システムメニューの「移動」
'Const SC_MINIMIZE = &HF020& 'システムメニューの「最小化」
'Const SC_MAXIMIZE = &HF030& 'システムメニューの「最大化」
Const SC_CLOSE = &HF060& 'システムメニューの「閉じる」
'Const SC_RESTORE = &HF120 'システムメニューの「元のサイズに戻す」
Const MF_BYCOMMAND = &H0& 'メニュー項目指定
Const MF_BYPOSITION = &H400& 'ポジション指定
'Const MF_ENABLED = &H0& '有効化
'Const MF_GRAYED = &H1& '無効化
'Const MF_DISABLED = &H2& '半無効化(見かけ上有効)
Dim DUMMY As Integer
''「区切り線」の削除
DUMMY = DeleteMenu(GetSystemMenu(f.Handle, 0), 5, MF_BYPOSITION)
''「閉じる」の削除 + xボタンの無効化
DUMMY = DeleteMenu(GetSystemMenu(f.Handle, 0), SC_CLOSE, MF_BYCOMMAND)
''描画 (変更を反映)
DUMMY = DrawMenuBar(f.Handle)
End Sub
''' <summary>本体のEXEファイルのあるフォルダをフルパスで返す</summary>
''' <returns>フォルダのフルパス。最後に\がつく。例) C:\MyFolder\ </returns>
Public Shared Function AppPath() As String
Return System.IO.Path.GetDirectoryName( _
System.Reflection.Assembly.GetExecutingAssembly().Location) + "\"
End Function
End Class