如何使用sendmessage和c#在第三方应用程序中增加轨迹栏/滑块的值?

如何使用sendmessage和c#在第三方应用程序中增加轨迹栏/滑块的值?,c#,winapi,slider,sendmessage,C#,Winapi,Slider,Sendmessage,嗨, 我希望在第三方应用程序中增加和减少滑块/轨迹栏的值。是否可以使用sendMessage()执行同样的操作。我有滑杆的把手。能找个人帮忙吗? 谢谢。首先像这样定义SendMessage函数 [DllImport("user32.dll", CharSet = CharSet.Auto)] static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam); uint TBM_GETP

嗨, 我希望在第三方应用程序中增加和减少滑块/轨迹栏的值。是否可以使用sendMessage()执行同样的操作。我有滑杆的把手。能找个人帮忙吗?
谢谢。

首先像这样定义SendMessage函数

[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
uint TBM_GETPOS = 0x0400;
uint TBM_SETPOS = 0x0405;

IntPtr hWnd = ...
IntPtr pos = SendMessage(hWnd, TBM_GETPOS, 0, 0);
SendMessage(hWnd, TBM_SETPOS, 1, pos.ToInt32() + 1);
然后像这样更新滑块位置

[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
uint TBM_GETPOS = 0x0400;
uint TBM_SETPOS = 0x0405;

IntPtr hWnd = ...
IntPtr pos = SendMessage(hWnd, TBM_GETPOS, 0, 0);
SendMessage(hWnd, TBM_SETPOS, 1, pos.ToInt32() + 1);
使用获取最大和最小可用位置

uint TBM_GETRANGEMAX = 0x0402;
uint TBM_GETRANGEMIN = 0x0401;

IntPtr max = SendMessage(hWnd, TBM_GETRANGEMAX, 0, 0);
IntPtr min = SendMessage(hWnd, TBM_GETRANGEMIN, 0, 0);

谢谢让我试试。但是有没有办法在上面的函数中直接传递从spy++获得的句柄?我没有spy++的经验。但是你可以使用hDlg=FindWindow(lpClassName,lpWindowName)()获取窗口句柄,使用GetDlgItem(hDlg,nIDDlgItem)()控制句柄所需的信息(类名,窗口名,dlg项的ID)可能是从spy++获得的。@sidon您保存了我的autoit脚本