コモンダイアログを開いたときに縮小版にしたい
職場で事情によりネットショップ・オーナーというソフトを使うことがあるんですけど、画像選択するコモンダイアログがいつもアイコンでしか開かない。Windowsって不便です。
でも毎回縮小表示にするのが面倒なので、何とかしたいと思った。そもそもコモンダイアログだろうとSendMessageでなんとか出来るとだろうと思い検索。すると既に公開されている方がいた!それでソースをそのままコピーして、利用するWindows2003とネットショップ・オーナーでも動作するように変更しただけです。ソール公開しているくまっちさんに感謝。
ここにバイナリ置いてきますね。主に自分のため。
以下改変したソース
#uselib "user32.dll"
#cfunc FindWindow "FindWindowA" sptr, sptr
#cfunc FindWindowEx "FindWindowExA" int, int, sptr, sptr, 
#define WM_COMMAND 0x0111
#define THUMBNAIL_XP 0x702d //XP
#define THUMBNAIL_W2K 0x7031 //W2K
screen 0,200,100,1
title "縮小版にしちゃう"
a = sysinfo(0)
;mes a
b = instr(a,0,"NT")
c = instr(a,0,"5.0")
d = instr(a,0,"5.1")
if(b > 0){
	mes "NT系"
}else{
	mes "NT系以外"
	mes "利用できません。"
stop
}
if( c > 0){
	mes "Win 2K"
	THUMBNAIL = THUMBNAIL_W2K
}else{
if( d > 0){
	mes "Win Xp"
	THUMBNAIL = THUMBNAIL_XP
}else{
	mes "Vista?"
	//mes "利用できません。"
	//stop 別にとめない
	THUMBNAIL = THUMBNAIL_XP
	}
}
while(1)
hwnd1 = FindWindow("#32770", "イメージソースの選択")
if(hwnd1 == 0){
	hwnd1 = FindWindow("#32770", "別名で保存")
}
if(hwnd1 == 0){
	hwnd1 = FindWindow("#32770", "名前を付けて保存")
}
if(hwnd1 == 0){
	hwnd1 = FindWindow("#32770", "画像選択")	//これを追加した
}
hwnd2 = FindWindowEx(hwnd1, 0, "SHELLDLL_DefView",0 )
if(hwnd2){
	sendmsg hwnd2,WM_COMMAND,THUMBNAIL,0
	while(FindWindowEx(hwnd1, 0, "SHELLDLL_DefView",0 ))
		wait(50)
	wend
}
wait(50)
wend