視窗置頂器 TopWindow

2021-08-26 02:24:02 字數 2728 閱讀 9180

n年前寫的陳年老物。。。但是卻很有用

最近改進下,不用全域性鉤子了,用全域性熱鍵。

對管理員許可權建立的程式視窗,本程式也需要管理員許可權才能對其操作

ctrl + f2 置頂當前啟用視窗

ctrl + f3 取消置頂當前啟用視窗

結束程式請用任務管理器強制結束

天翼雲貌似分享功能炸了,按了沒反應

果然還是 github 做**倉庫好,沒有雲盤的一堆奇怪問題

vs 2017 工程 + 已靜態編譯程式 (只編譯了x64版)

github:

#include 

// 全域性鉤子版

//#define keydown(vk_code) ((getasynckeystate(vk_code) & 0x8000) ? 1 : 0)

//#define keyup(vk_code) ((getasynckeystate(vk_code) & 0x8000) ? 0 : 1)

////hhook hook;

////lresult callback callnexthook(int ncode, wparam wparam, lparam lparam)

//// else if (keydown(vk_f3) && keydown(vk_rcontrol))

//

// if (keydown(vk_f12) && keydown(vk_rcontrol))

//

// return callnexthookex(0, ncode, wparam, lparam);

//}//

//int winapi winmain(hinstance hinstance,hinstance hprevinstance,lpstr lpcmdline,int ncmdshow)

//// unhookwindowshookex(hook);

// return 0;

//}// 全域性熱鍵版

atom hotkeyid1, hotkeyid2;

lresult __stdcall wndproc(hwnd hwnd, uint msg, wparam wparam, lparam lparam)

return defwindowproca(hwnd, msg, wparam, lparam);

}int __stdcall winmain(hinstance hinstance, hinstance hprevinstance, lpstr lpcmdline, int ncmdshow)

"); if (error_already_exists == getlasterror())

char *helptext = "ctrl+f2 置頂當前啟用視窗\nctrl+f3 取消置頂當前啟用視窗\n結束程式請在任務管理器強制結束\n";

messagebox(0, helptext, "help text", 0);

//建立隱藏視窗,僅用於捕獲熱鍵

wndclas*** wcex;

memset(&wcex, 0, sizeof(wcex));

wcex.cbsize = sizeof(wcex);

wcex.style = 0;

wcex.lpfnwndproc = wndproc;

wcex.cbcl***tra = 0;

wcex.cbwndextra = 0;

wcex.hinstance = getmodulehandlea(0);

wcex.hicon = 0;

wcex.hcursor = 0;

wcex.hbrbackground = 0;

wcex.lpszmenuname = 0;

wcex.lpszclassname = "test";

if (registerclas***a(&wcex) == false)

return -1;

hwnd hwnd = createwindowa("test", "", ws_ex_noactivate, 0, 0, 0, 0, 0, 0, getmodulehandlea(0), 0);

showwindow(hwnd, sw_hide);

//註冊熱鍵

hotkeyid1 = globaladdatom("topwindow") - 0xc000;

hotkeyid2 = globaladdatom("notopwindow") - 0xc000;

// 這裡修改快捷鍵

int b = registerhotkey(hwnd, hotkeyid1, mod_control, vk_f2);

b = registerhotkey(hwnd, hotkeyid2, mod_control, vk_f3);

msg msg;

while (getmessagea(&msg, 0, 0, 0))

else

if (msg.message == wm_user + 2)

}// 一般不會到達這裡,一般是直接任務管理器結束此程式

// 清理

unregisterhotkey(hwnd, hotkeyid1);

unregisterhotkey(hwnd, hotkeyid2);

globaldeleteatom(hotkeyid1);

globaldeleteatom(hotkeyid2);

return

0;}

視窗置頂 取消置頂工具

include pragma comment linker,subsystem windows int winapi winmain hinstance hinstance,hinstance hprevinstance,lpstr lpcmdline,int icmdshow setwindowp...

解析Delphi 視窗置頂,及非主視窗置頂

方法一 方法二 視窗置頂 setwindowpos self.handle,hwnd topmiost,0,0,0,0,swp nomove or swp nosize 視窗置頂 setwindowpos self.handle,hwnd notopmiost,0,0,0,0,swp nomove ...

視窗置頂 仿TopWind

前置學習 低階滑鼠hook,獲得滑鼠狀態。這個在原來獲得滑鼠狀態的基礎上,加上乙個事件處理即可。topwind就是乙個可以置頂視窗的檔案,避免複製貼上的時候的來回切換 大視窗與小視窗 算是乙個實用的工具 至少我蠻喜歡的 所以自己就仿造了寫了乙個,利用之前的那個滑鼠hook。介面如圖所示,可以看到是置...