PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
8099 | 99/09/08 16:40:03 | RE(4):PB5.0.04: 他のwindowをactiveにする方法 By M.M |
8093 | 99/09/08 15:35:37 | RE(3):PB5.0.04: 他のwindowをactiveにする方法 By まこと |
8089 | 99/09/08 14:46:48 | RE(2):PB5.0.04: 他のwindowをactiveにする方法 By t-taka |
7994 | 99/09/03 20:05:53 | RE(1):PB5.0.04: 他のwindowをactiveにする方法 By M.M |
7984 | 99/09/03 15:11:57 | PB5.0.04: 他のwindowをactiveにする方法 By t-taka |
カテゴリ:PowerBuilderの開発環境
日付:1999年09月08日 16:40 発信者:M.M
題名:RE(4):PB5.0.04: 他のwindowをactiveにする方法
t-takaさん、こんにちは。
>*5.の処理の時、画面は表示されているが,制御状態なので、ENTERキーを押下すると、アイコン化
>されているウィンドウが開いてしまうことがあります。
>(どのウィンドウに制御がいっているかわからない。
> SQL Anywhereのウィンドウだったり、他のウィンドウだったり規則性はないです。)
> そこで、4.の処理の時に強制的に1.の画面をアクティブにしたいのですがやり方がわかりません。
4の処理で、レスポンスウィンドウを閉じる前に自分自身をアクティブ状態にすれば
親ウィンドウがうまくアクティブになりそうな気がします。(推測ですが...)
Win32APIの\"SetForegroundWindow\"で、任意のウィンドウを強制的にアクティブにできます。
【ローカルまたはグローバル外部関数】
Function UnsignedLong FindWindowA(Unsignedlong classname,REF String lpszWindow) &
LIBRARY \"User32.dll\"
Function boolean SetForegroundWindow(UnsignedLong lhwnd) Library \"USER32.DLL\"
【スクリプトの記述】
//指定したウィンドウ名のウィンドウを、強制的にアクティブにする
string windowTitle
unsignedlong lhwnd
//クラス名とウィンドウタイトル名を取得
windowTitle = \"ウィンドウのタイトル名\"
//WindowsAPIをコールして、指定したタイトル名を持つウィンドウを調べる
lhwnd = FindWindowA(0,windowTitle)
if lhwnd=0 then MessageBox(\"エラー\",\"指定したタイトルのウィンドウが見つかりません\")
//指定したハンドルのウィンドウを、アクティブにする
if SetForegroundWindow(lhwnd) then
MessageBox(\"\",\"OK\")
else
MessageBox(\"\",\"NG\")
end if
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows95
DBMS Sybase SQL Anywhere Client
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS Sybase SQL Anywhere Standalone
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.