在自己寫的delphi服務程式里,如果關閉外部的exe程式呢?還有,在自己撰寫的服務程式里如何修改螢屏的解析度呢?我在自己撰寫的服務里,獲取本機器的螢屏解析度,我的解析度是1366 x 768 ,但是我每次得到的都是1024 x 768。我做了個測驗,在服務程式的一個form的create方法里,輸出當前螢屏的解析度,這個create程序執行了好幾遍,1366 x 768 和1024 x 768都有輸出。不知道是什么情況。請大家幫幫忙。
uj5u.com熱心網友回復:
postmessage(句柄,wm_syscommand,sc_close,0);
uj5u.com熱心網友回復:
參考 1 樓 zhzhrony 的回復: postmessage(句柄,wm_syscommand,sc_close,0);
還是沒有將外部的程式關閉。我是用OpenProcess得到行程ID
uj5u.com熱心網友回復:
一定要找EXE的句柄,才能操控關閉。
uj5u.com熱心網友回復:
參考 3 樓 lyhoo163 的回復: 一定要找EXE的句柄,才能操控關閉。
請問怎么才能得到這個exe的句柄啊?
uj5u.com熱心網友回復:
參考 1 樓 zhzhrony 的回復: postmessage(句柄,wm_syscommand,sc_close,0);
句柄=findwindow(nil,'表單標題');
postmessage(句柄,wm_syscommand,sw_close,0);
uj5u.com熱心網友回復:
參考 5 樓 zhzhrony 的回復: Quote: 參考 1 樓 zhzhrony 的回復:
postmessage(句柄,wm_syscommand,sc_close,0);
句柄:=findwindow(nil,'表單標題');
postmessage(句柄,wm_syscommand,sc_close,0);
uj5u.com熱心網友回復:
參考 6 樓 zhzhrony 的回復: Quote: 參考 5 樓 zhzhrony 的回復:
Quote: 參考 1 樓 zhzhrony 的回復:
postmessage(句柄,wm_syscommand,sc_close,0);
句柄:=findwindow(nil,'表單標題');
postmessage(句柄,wm_syscommand,sc_close,0);
這種方法在普通的應用程式好像可以,但是在服務程式里好像還真不行。
uj5u.com熱心網友回復:
參考 5 樓 zhzhrony 的回復: 句柄=findwindow(nil,'表單標題');
postmessage(句柄,wm_syscommand,sw_close,0);
我使用findwindow在普通的應用程式,通過點擊按鈕,可以得到我想要的handle,但是,在服務程式里,沒有可視化界面,得到的句柄就總是0
uj5u.com熱心網友回復:
參考 8 樓 class221 的回復: Quote: 參考 5 樓 zhzhrony 的回復:
句柄=findwindow(nil,'表單標題');
postmessage(句柄,wm_syscommand,sw_close,0);
我使用findwindow在普通的應用程式,通過點擊按鈕,可以得到我想要的handle,但是,在服務程式里,沒有可視化界面,得到的句柄就總是0
沒有表單標題也可以找到handle,但需要知道類名。
uj5u.com熱心網友回復:
沒有可視化界面的話找不到handle,但應該可以找到行程,然后關閉行程
uj5u.com熱心網友回復:
參考 9 樓 seleron 的回復: Quote: 參考 8 樓 class221 的回復:
Quote: 參考 5 樓 zhzhrony 的回復:
句柄=findwindow(nil,'表單標題');
postmessage(句柄,wm_syscommand,sw_close,0);
我使用findwindow在普通的應用程式,通過點擊按鈕,可以得到我想要的handle,但是,在服務程式里,沒有可視化界面,得到的句柄就總是0
沒有表單標題也可以找到handle,但需要知道類名。
不是沒有表單標題,我是指我的服務程式沒有表單,外部的exe程式是有表單的。但是我不知道為啥,就是得不到那個外部exe的句柄,不知道是不是服務程式里需要什么權限否?
uj5u.com熱心網友回復:
參考 9 樓 seleron 的回復: Quote: 參考 8 樓 class221 的回復:
Quote: 參考 5 樓 zhzhrony 的回復:
句柄=findwindow(nil,'表單標題');
postmessage(句柄,wm_syscommand,sw_close,0);
我使用findwindow在普通的應用程式,通過點擊按鈕,可以得到我想要的handle,但是,在服務程式里,沒有可視化界面,得到的句柄就總是0
沒有表單標題也可以找到handle,但需要知道類名。
關閉行程倒是可以實作,但是如果直接關閉行程,我還需要改螢屏的解析度。我的外部exe程式就是修改螢屏解析度的,啟動的時候將螢屏解析度改成800x600,關閉后又將螢屏解析度改回來。
uj5u.com熱心網友回復:
參考 12 樓 class221 的回復: Quote: 參考 9 樓 seleron 的回復:
Quote: 參考 8 樓 class221 的回復:
Quote: 參考 5 樓 zhzhrony 的回復:
句柄=findwindow(nil,'表單標題');
postmessage(句柄,wm_syscommand,sw_close,0);
我使用findwindow在普通的應用程式,通過點擊按鈕,可以得到我想要的handle,但是,在服務程式里,沒有可視化界面,得到的句柄就總是0
沒有表單標題也可以找到handle,但需要知道類名。
關閉行程倒是可以實作,但是如果直接關閉行程,我還需要改螢屏的解析度。我的外部exe程式就是修改螢屏解析度的,啟動的時候將螢屏解析度改成800x600,關閉后又將螢屏解析度改回來。
1、既然外部EXE也是你的,那還不簡單,在EXE里面定義一個唯一的型別名,然后通過服務程式查找;
2、外部程式啟動時向服務程式發送自己的句柄;
uj5u.com熱心網友回復:
參考 13 樓 zhzhrony 的回復: Quote: 參考 12 樓 class221 的回復:
Quote: 參考 9 樓 seleron 的回復:
Quote: 參考 8 樓 class221 的回復:
Quote: 參考 5 樓 zhzhrony 的回復:
句柄=findwindow(nil,'表單標題');
postmessage(句柄,wm_syscommand,sw_close,0);
我使用findwindow在普通的應用程式,通過點擊按鈕,可以得到我想要的handle,但是,在服務程式里,沒有可視化界面,得到的句柄就總是0
沒有表單標題也可以找到handle,但需要知道類名。
關閉行程倒是可以實作,但是如果直接關閉行程,我還需要改螢屏的解析度。我的外部exe程式就是修改螢屏解析度的,啟動的時候將螢屏解析度改成800x600,關閉后又將螢屏解析度改回來。
1、既然外部EXE也是你的,那還不簡單,在EXE里面定義一個唯一的型別名,然后通過服務程式查找;
2、外部程式啟動時向服務程式發送自己的句柄;
大哥,這能不能再說詳細一點啊?第一種方法,定義一個記錄型別嗎?服務程式如何查找啊?查找什么啊?
第二種方法,是通過tcp或者udp發送嗎?或者還有其他的方法發送啊?
謝謝了,這個我不是很懂。
uj5u.com熱心網友回復:
服務程式跟外面的exe程式是不是不在同一個桌面環境下的啊?為什么我獲得的螢屏解析度不是我自己桌面的解析度啊?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/101736.html
標籤:Windows SDK/API
上一篇:DLL中的表單如何與主表單互相通信
下一篇:IOCTL_DISK_SET_DRIVE_LAYOUT_EX 怎樣創建擴展磁區