Merge pull request from go-vgo/dev

refactoring close_window() allow by pid
This commit is contained in:
vz 2018-08-23 12:10:12 -04:00 committed by GitHub
commit 1d7f43f3c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 8 deletions

View File

@ -1358,8 +1358,21 @@ func MaxWindow(pid int32, args ...interface{}) {
} }
// CloseWindow close the window // CloseWindow close the window
func CloseWindow() { func CloseWindow(args ...int32) {
C.close_window() if len(args) <= 0 {
C.close_main_window()
return
}
var hwnd, isHwnd int32
if len(args) > 0 {
hwnd = args[0]
}
if len(args) > 1 {
isHwnd = args[1]
}
C.close_window(C.uintptr(hwnd), C.uintptr(isHwnd))
} }
// SetHandle set the window handle // SetHandle set the window handle

View File

@ -75,8 +75,8 @@ void max_window(uintptr pid, bool state, uintptr isHwnd){
#endif #endif
} }
void close_window(void){ void close_window(uintptr pid, uintptr isHwnd){
CloseWin(); close_window_by_PId(pid, isHwnd);
} }
bool set_handle(uintptr handle){ bool set_handle(uintptr handle){

View File

@ -20,6 +20,7 @@ bool IsAxEnabled(bool options);
MData GetActive(void); MData GetActive(void);
void initWindow(); void initWindow();
char* get_title_by_hand(MData m_data); char* get_title_by_hand(MData m_data);
void close_window_by_Id(MData m_data);
//int findwindow() //int findwindow()
@ -538,15 +539,28 @@ void SetTopMost(bool state){
#endif #endif
} }
void close_main_window (){
// Check if the window is valid
if (!IsValid()) { return; }
close_window_by_Id(mData);
}
void close_window_by_PId(uintptr pid, uintptr isHwnd){
MData win = set_hand_pid(pid, isHwnd);
close_window_by_Id(win);
}
// CloseWindow // CloseWindow
void CloseWin(void){ void close_window_by_Id(MData m_data){
// Check window validity // Check window validity
if (!IsValid()) {return;} if (!IsValid()) {return;}
#if defined(IS_MACOSX) #if defined(IS_MACOSX)
AXUIElementRef b = NULL; AXUIElementRef b = NULL;
// Retrieve the close button of this window // Retrieve the close button of this window
if (AXUIElementCopyAttributeValue(mData.AxID, if (AXUIElementCopyAttributeValue(m_data.AxID,
kAXCloseButtonAttribute, (CFTypeRef*) &b) kAXCloseButtonAttribute, (CFTypeRef*) &b)
== kAXErrorSuccess && b != NULL) { == kAXErrorSuccess && b != NULL) {
// Simulate button press on the close button // Simulate button press on the close button
@ -562,11 +576,11 @@ void CloseWin(void){
XDismissErrors(); XDismissErrors();
// Close the window // Close the window
XDestroyWindow(rDisplay, mData.XWin); XDestroyWindow(rDisplay, m_data.XWin);
#elif defined(IS_WINDOWS) #elif defined(IS_WINDOWS)
PostMessage(mData.HWnd, WM_CLOSE, 0, 0); PostMessage(m_data.HWnd, WM_CLOSE, 0, 0);
#endif #endif
} }