mirror of
https://github.com/go-vgo/robotgo.git
synced 2025-06-03 23:53:54 +00:00
Merge pull request #159 from go-vgo/dev
refactoring close_window() allow by pid
This commit is contained in:
commit
1d7f43f3c8
17
robotgo.go
17
robotgo.go
@ -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
|
||||||
|
@ -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){
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user