PB 電子会議室
| 発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) | 
|---|---|---|
| 6824 | 99/06/16 15:58:54 | RE(7):Win32API(FindWindow)について(おまけレスのおまけ) By Taka | 
| 6819 | 99/06/16 15:20:38 | RE(6):Win32API(FindWindow)について(おまけレス) By O.Takagi | 
| 6737 | 99/06/14 14:10:49 | RE(5):Win32API(FindWindow)について(おまけレス) By M.M | 
| 6731 | 99/06/14 11:17:17 | RE(4):PB5.0.04: 5.0.02から04にバージョンアップしたらAPI(FindWIndow)が変になりました。 By O.Takagi | 
| 6729 | 99/06/14 11:12:27 | RE(3):PB5.0.04: 5.0.02から04にバージョンアップしたらAPI(FindWIndow)が変になりました。 By Taka | 
| 6727 | 99/06/14 10:49:12 | RE(2):PB5.0.04: 5.0.02から04にバージョンアップしたらAPI(FindWIndow)が変になりました。 By O.Takagi | 
| 6712 | 99/06/11 16:42:36 | RE(1):PB5.0.04: 5.0.02から04にバージョンアップしたらAPI(FindWIndow)が変になりました。 By M.M | 
| 6710 | 99/06/11 16:25:22 | PB5.0.04: 5.0.02から04にバージョンアップしたらAPI(FindWIndow)が変になりました。 By O.Takagi | 
カテゴリ:スクリプトの記述
日付:1999年06月14日 10:49 発信者:O.Takagi
題名:RE(2):PB5.0.04: 5.0.02から04にバージョンアップしたらAPI(FindWIndow)が変になりました。
  M.Mさん、こんにちは。
>具体的に、FindWindowAの外部関数の定義と、その外部関数を呼び出しているスクリプト
>の記述がどうなっているか、教えてもらえますか。
>
>情報不足のため、現時点では何とも言えません。
こんな感じです。
今まで(5.5.02)は動いていたので、どこが悪いのかはわかりません。
//グローバル外部関数の定義
FUNCTION Boolean SetForegroundWindow(long hndl)                      LIBRARY \"user32.dll\"
FUNCTION long FindWindowA(ref String ap_name, ref String ap_title)   LIBRARY \"user32.dll\"
FUNCTION long SendMessageA(Long hndl, Int msg, Int wp, Long lp)      LIBRARY \"user32.dll\"
//インスタンス変数の定義
String i_exe = \"c:\\pb\\css\\cs_san.exe\"
Transaction tra_cont
String i_ap    = \"FNWND050\"
//実際のスクリプト。
Long ret
item = Integer(This.Tag)	//1.タグ値よりメッセージ値を取得 //
i_title = \"案内一覧\"
ret = FindWindowA(i_ap, i_title)	//2.
If ret < 1 Then 
	If Run(i_exe, Normal!) <> 1 Then
		MessageBox(\"ERROR\", \"実行出来ませんでした。(Run)\")
		Return
	End If
Else
	SetForegroundWindow(ret)
End If
//3
Do While ret < 1
	ret = FindWindowA(i_ap, i_title)
Loop
SendMessageA(ret, item, 0, 0)
【処理の説明】
1.”タグ値よりメッセージ値”について
    これは、ユーザオブジェクトのコマンドボタンを使っています。押されたボタンによってSendする値を変えるため
に、それぞれのコマンドボタンのタグ値に値を持たせています。
2.FindWindowAについて。
    Runをする際の2重起動防止のために行っています。実際、2重起動してないので、ここは動いていると思われま
す。
3.ループについて。
    Runしたアプリの最初のウィンドウが開ききるまで、ここでループします。と言うのは、開ききってからメッセージ
を送信するためです。
定義の中で記述してある
String i_ap    = \"FNWND050\" は、スパイ++を使って取得しました。
こんなかんじでわかるでしょうか。
よろしくお願いします。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows95
DBMS (記載なし)
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.




