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 (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.