从 Rundll32 调用的 SetCursorPos 函数?
SetCursorPos function called from Rundll32?
如何从 windows RunDll32
应用程序正确调用 SetCursorPos
函数?
如果我尝试这样做,它会将光标发送到右下角:
RunDll32.exe user32.dll,SetCursorPos 100, 100
但我将正确的值传递给它的参数:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms648394%28v=vs.85%29.aspx
PS:我对替代方案不感兴趣,例如 NirCMD 应用程序,我知道它们,我只想知道我的问题的答案做了,谢谢。
这是不可能的。 RunDll32
只能调用具有此签名的函数:
void CALLBACK EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow);
所以如果你这样做
RunDll32.exe user32.dll,SetCursorPos 100 100
你告诉 RunDll32.exe
这样做:
SetCursorPos(0x314159, 0x265358, "100 100", 1)
...如果前两个参数不受您的控制(例如,在我的机器中,调用将光标移动到右上角)。
更多信息from the docs:
hwnd - window handle that should be used as the owner window for
any windows your DLL creates
hinst - your DLL's instance handle
lpszCmdLine - ASCIIZ command line your DLL should parse
nCmdShow - describes how your DLL's windows should be displayed
如何从 windows RunDll32
应用程序正确调用 SetCursorPos
函数?
如果我尝试这样做,它会将光标发送到右下角:
RunDll32.exe user32.dll,SetCursorPos 100, 100
但我将正确的值传递给它的参数:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms648394%28v=vs.85%29.aspx
PS:我对替代方案不感兴趣,例如 NirCMD 应用程序,我知道它们,我只想知道我的问题的答案做了,谢谢。
这是不可能的。 RunDll32
只能调用具有此签名的函数:
void CALLBACK EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow);
所以如果你这样做
RunDll32.exe user32.dll,SetCursorPos 100 100
你告诉 RunDll32.exe
这样做:
SetCursorPos(0x314159, 0x265358, "100 100", 1)
...如果前两个参数不受您的控制(例如,在我的机器中,调用将光标移动到右上角)。
更多信息from the docs:
hwnd - window handle that should be used as the owner window for
any windows your DLL creates
hinst - your DLL's instance handle
lpszCmdLine - ASCIIZ command line your DLL should parse
nCmdShow - describes how your DLL's windows should be displayed