PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
22575 06/03/28 17:57:01 RE(5):PB9.0: PBから別Exeの制御 By nek
22566 06/03/27 19:02:19 RE(4):PB9.0: PBから別Exeの制御 By ace
22565 06/03/27 18:30:52 RE(3):PB9.0: PBから別Exeの制御 By ace
22564 06/03/27 14:08:25 RE(2):PB9.0: PBから別Exeの制御 By nek
22561 06/03/22 17:13:25 RE(1):PB9.0: PBから別Exeの制御 By ace
22550 06/03/20 18:12:06 PB9.0: PBから別Exeの制御 By nek

カテゴリ:スクリプトの記述
日付:2006年03月27日 19:02 発信者:ace
題名:RE(4):PB9.0: PBから別Exeの制御

サンプルソースです
Boolean bRet
String WkNULL
unsignedlong GW_HWNDFIRST   =     0
unsignedlong GW_HWNDLAST    =     1
unsignedlong GW_HWNDNEXT    =     2
unsignedlong GW_HWNDPREV    =     3
unsignedlong GW_OWNER       =     4
unsignedlong GW_CHILD       =     5
unsignedlong hWND
unsignedinteger  WM_CLOSE  =  16
integer SW_SHOWNORMAL       = 1
Long STARTF_USESHOWWINDOW    = 1
Long lpdwProcessId

STARTUPINFO lpStartupInfo
PROCESS_INFORMATION lpProcessInformation

lpStartupInfo.dwFlags      = STARTF_USESHOWWINDOW;
lpStartupInfo.wShowWindow  = SW_SHOWNORMAL;

SetNULL(WkNULL)
//ノートパッドを起動します。
bRet = CreateProcess(WkNULL, \"NOTEPAD\", WkNULL, WkNULL, FALSE, 0, WkNULL, WkNULL, lpStartupInfo, 
lpProcessInformation);

MessageBox(\"起動\",\"ノートパッドを起動しました~起動の確認をしてOKしてください\")

//全てのトップレベルのウィンドウを検索し、プロセスIDが一致したアプリケーションを終了させます
SetNull(hWnd)
hWnd = GetTopWindow(hWnd)
DO WHILE hWnd <> 0
GetWindowThreadProcessId(hWnd,lpdwProcessId)
IF lpdwProcessId = lpProcessInformation.dwProcessId THEN
PostMessage(hWnd, WM_CLOSE, 0, 0)
END IF
hWnd = GetWindow(hWnd,GW_HWNDNEXT)
LOOP

余談ですが
強制終了させたい場合は
TerminateProcess(lpProcessInformation.dwProcessId, 0);
としてみてもいいと思います。

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows XP
DBMS Oracle Net 9
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)

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