HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
1104
弘中既に起動しているプログラムのhwndを指定してファイルを開きたい3未解決


弘中

リンク

2020/11/4(Wed) 20:48:02|NO.91733

お世話になります。質問させてください。


#uselib "user32.dll" #func global FindWindow "FindWindowExA" sptr,sptr,sptr,sptr #func global GetClassName "GetClassNameA" sptr,sptr,sptr #uselib "shell32.dll" #func ShellExecute "ShellExecuteA" int,sptr,sptr,sptr,sptr,int exec "notepad.exe" exec "notepad.exe" // 起動中のnotepadのHWNDを全て取得 hwnd_target = 0 hparent = 0 count = 0 repeat //ウィンドウを検索 FindWindow hparent, hwnd_target, 0, 0 hwnd_target = stat if ( hwnd_target == 0 ) : break //クラス名を取得 sdim class, 1024 GetClassName hwnd_target, varptr(class), 1024 //dialog class if ( instr(class,0,"Notepad") != -1 ) { // 起動している場合、ハンドルと個数を記録 notepad_hwnd(count) = hwnd_target count ++ } loop repeat count //dialog notepad_hwnd(cnt),,""+count loop ShellExecute notepad_hwnd(1),0,"open","C:\\Windows\\notepad.exe","c:\\バイク.txt",0 end

既にメモ帳を実行していて、そのメモ帳のhwndを取得し、そのメモ帳で開きたいと思ったのですが
上手くいきません。

この方法では駄目なのでしょうか?


ご教授、よろしくお願い致します。



この記事に返信する


MillkeyStars

リンク

2020/11/4(Wed) 21:56:01|NO.91734

やりたいことはわかるけど、ShellExecute は新しいプロセスを起動するだけで起動したその後に関しては関与しないから無意味だと思うよ。

単純に起動中の対象のメモ帳に対して WM_DROPFILES を送信してあげれば良いと思うよ。
(編集中のメモ帳に対して WM_DROPFILES を送るとダイアログが表示される対処はまた別の話です)

WM_DROPFILES のサンプル : http://hsp.tv/play/pforum.php?mode=all&num=89843
(AviUtl が対象ですが、WM_DROPFILES で座標が必要ではない場合ファイルパスだけ違うだけなので使えると思います。)



弘中

リンク

2020/11/5(Thu) 15:16:58|NO.91736

MilkeyStars様

返信ありがとうございます、遅くなりすみません。
うまく動作できそうです、ありがとうございます。
一つお聞きしたいのですが、プログラム書いた人へ聞いていないので申し訳ないのですが


just = 20 + (strlen(s) + 1) + 1 num = (just + 3) / 4 * 4 GlobalAlloc GPTR, num addr = stat dupptr df, addr, num, vartype("int") df.0 = 20 df.1 = x df.2 = y df.3 = 0 df.4 = 0
このx,y座標やこれらは何をしている部分なのですか?
このxy座標にドロップするということですか?
すこし疑問に思いました
よろしくお願い致します。



MillkeyStars

リンク

2020/11/5(Thu) 22:17:38|NO.91738

>>このx,y座標やこれらは何をしている部分なのですか?
>>このxy座標にドロップするということですか?
その考えで合ってます。
ドラッグ&ドロップは、本来座標も考慮されるので座標も指示が必要ですがメモ帳は座標を指示する必要がないので利用してなくてもOKです。



ONION software Copyright 1997-2021(c) All rights reserved.