(AHK)(AutoHotkey)(気まぐれ更新)(久々に imgctl.dllでお遊び)

 imgctl.dll を使って 自分用に ちょっとプログラム書いてたら
( ルーチェさんの HP は こちら http://www.ruche-home.net/?Home
いつの間にか imgctl.dll の ライブラリを作り始めていた
な・・・ 何を言ってるのかわからねーと思うが・・・ 以下略)

 とまぁ いろいろと 書いてる最中ですが 関数を1つだけ公開
同ライブラリ内の関数を呼び出しているので コレだけでは動きません 笑)
他の関数の公開は また ぼちぼちとやっていきます
;---------------------------------------------------------------------------------------------------------------------------------------------------------
; imgctl_NewDIB(NewWidth, NewHeight)     新規にDIBを作成して hDIBを返します
;---------------------------------------------------------------------------------------------------------------------------------------------------------
; 横:NewWidth 縦:NewHeight のサイズで 新規に DIBを生成します
;
; いちいちプログラムのみで DIBを生成するのも面倒くさいので 笑)、というか作り方がわからないので 笑)
; 1x1.bmp という 縦横白1px の 画像 を 開いて リサイズする事によって 指定されたサイズのDIBを生成します
;
; 注意 : 1x1.bmp というファイルがない場合は 自動的に スクリプトと同じ所に ファイルを生成します
;
; 生成に成功すると DIBのハンドルが、 失敗すると 0が返ってきます
Imgctl_NewDIB(NewWidth, NewHeight)
{
	; BMPファイルが無かったら 自分で作ります
	If !DllCall("shlwapi.dll\PathFileExistsA", "Str", "1x1.bmp")
	{
		BinDataImage := "0x42,0x4D,0x3A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x28,0x00,"
		BinDataImage .= "0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x18,0x00,0x00,0x00,"
		BinDataImage .= "0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,"
		BinDataImage .= "0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00"
		VarSetCapacity(buf, 58, 0x00)
		Loop Parse, BinDataImage, CSV
		{
			NumPut((A_LoopField + 0), buf, (a_index - 1), "Char")
		}
		; GENERIC_WRITE         = 0x40000000
		; CREATE_ALWAYS         = 0x2
		; FILE_ATTRIBUTE_NORMAL = 0x80
		hFile := DllCall("kernel32.dll\CreateFileA", "Str", "1x1.bmp", "UInt", 0x40000000, "UInt", 0, "UInt", 0, "UInt", 0x2, "UInt", 0x80, "UInt", 0, "UInt")
		DllCall("kernel32.dll\WriteFile", "UInt", hFile, "UInt", &buf, "UInt", 58, "UIntP", WritedSize, "UInt", 0, "Int")
		DllCall("kernel32.dll\CloseHandle", "UInt", hFile, "Int")
	}

	; もう一回チェックしてBMPが存在すれば それを開いて リサイズをかけます
	If DllCall("shlwapi.dll\PathFileExistsA", "Str", "1x1.bmp")
	{
		buf2 := Imgctl_ToDIB("1x1.bmp")
		If Imgctl_ResizeDIB(buf2, NewWidth, NewHeight)
			Return buf2
		Else
			Return 0
	}Else{
		Return 0
	}
}
;---------------------------------------------------------------------------------------------------------------------------------------------------------
 このサンプルの 見所 としては
ファイルが無かったら このスクリプトが自力で bmpファイルを生成する所ですね
これは これ以外の所でも 結構 応用が利くのでは無いでしょうかね?