几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » 程序设计 » vc编程
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2008-02-13, 04:36 PM   #1
huangyhg
超级版主
 
huangyhg的头像
 
注册日期: 04-03
帖子: 18592
精华: 36
现金: 249466 标准币
资产: 1080358888 标准币
huangyhg 向着好的方向发展
默认 【转帖】 遍历对话框里的static控件

遍历对话框里的static控件
::ShowWindow(hwnd,SW_RESTORE);
::SetForegroundWindow(hwnd);
keybd_event(VK_MENU,0,0,0);//按下Alt
keybd_event(82,0,0,0);//按下R键
keybd_event(82,0,KEYEVENTF_KEYUP,0);//松开R键
keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);//....
参考参考,俺的代码。
huangyhg离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
旧 2008-02-13, 04:37 PM   #2
huangyhg
超级版主
 
huangyhg的头像
 
注册日期: 04-03
帖子: 18592
精华: 36
现金: 249466 标准币
资产: 1080358888 标准币
huangyhg 向着好的方向发展
默认 回复: 【转帖】 遍历对话框里的static控件

HWND tmpa=::FindWindow("#32770 (Dialog)",NULL);
tmpa=::FindWindowEx(tmpa,NULL,"Edit",NULL);
char *msg;
CString tmp;
m_msg.GetWindowText(tmp);
msg=tmp.GetBuffer(tmp.GetLength());
::SendMessage(tmpa,WM_SETTEXT,tmp.GetLength(),(long)msg);
keybd_event 或者sendinput都行,你想写一串,可以用一个数组,循环写,
用vkscan()和mapvirtualkey()结合,把字符转化成virtualkey 或者扫描码来发送,
procedure SendShift(H: HWnd; Down: Boolean);
var
vKey, ScanCode: Word;
lParam: longint;
begin
vKey:= $10;
ScanCode:= MapVirtualKey(vKey, 0);
lParam:= longint(ScanCode) shl 16 or 1;
if not(Down) then lParam:=lParam or $C0000000;
SendMessage(H, WM_KEYDOWN, vKey, lParam);
end;
{****************************************************}
procedure SendCtrl(H: HWnd; Down: Boolean);
var
vKey, ScanCode: Word;
lParam: longint;
begin
vKey:= $11;
ScanCode:= MapVirtualKey(vKey, 0);
lParam:= longint(ScanCode) shl 16 or 1;
if not(Down) then lParam:= lParam or $C0000000;
SendMessage(H, WM_KEYDOWN, vKey, lParam);
end;
{****************************************************}
function TBUSendKey.SendKey(AppName:string;Key:Char):Boolean;
var
vKey, ScanCode: Word;
lParam, ConvKey: longint;
Shift, Ctrl: boolean;
H:HWND;
begin
H:=FindWindow(pchar(appname),nil);
if H<>0 then
begin
ConvKey:= OemKeyScan(ord(Key));
Shift:= (ConvKey and $00020000) <> 0;
Ctrl:= (ConvKey and $00040000) <> 0;
ScanCode:= ConvKey and $000000FF or $FF00;
vKey:= ord(Key);
lParam:= longint(ScanCode) shl 16 or 1;
if Shift then SendShift(H, true);
if Ctrl then SendCtrl(H, true);
SendMessage(H, WM_KEYDOWN, vKey, lParam);
SendMessage(H, WM_CHAR, vKey, lParam);
lParam:= lParam or $C0000000;
SendMessage(H, WM_KEYUP, vKey, lParam);
if Shift then SendShift(H, false);
if Ctrl then SendCtrl(H, false);
result:=true;
end
else result:=false;
end;
可以对单个程序SendKey,全部就可以用kimryo的方法。还有方法是用Hook,很好的,我就不说了。有问题可以Email:Zeng@zymail.net
VOID keybd_event(
BYTE bVk, // virtual-key code
BYTE bScan, // hardware scan code
DWORD dwFlags, // function options
ULONG_PTR dwExtraInfo // additional keystroke data
);
__________________
借用达朗贝尔的名言:前进吧,你会得到信心!
[url="http://www.dimcax.com"]几何尺寸与公差标准[/url]
huangyhg离线中   回复时引用此帖
旧 2008-02-13, 04:38 PM   #3
huangyhg
超级版主
 
huangyhg的头像
 
注册日期: 04-03
帖子: 18592
精华: 36
现金: 249466 标准币
资产: 1080358888 标准币
huangyhg 向着好的方向发展
默认 回复: 【转帖】 遍历对话框里的static控件

msdn 中的例子
The following sample program toggles the NUM LOCK light (on Windows NT only) by using keybd_event() with a virtual key of VK_NUMLOCK.

#include <windows.h>

void SetNumLock( BOOL bState )
{
BYTE keyState[256];

GetKeyboardState((LPBYTE)&keyState);
if( (bState && !(keyState[VK_NUMLOCK] & 1)) ||
(!bState && (keyState[VK_NUMLOCK] & 1)) )
{
// Simulate a key press
keybd_event( VK_NUMLOCK,
0x45,
KEYEVENTF_EXTENDEDKEY | 0,
0 );

// Simulate a key release
keybd_event( VK_NUMLOCK,
0x45,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0);
}
}

void main()
{
SetNumLock( TRUE );
}
--------------------------------------------------------------------------------

LPCTSTR lpWindowName = _T("QQ用户登录");
CWnd *pDialog = FindWindow(NULL, lpWindowName);
CWnd * pChild = pDialog->GetWindow(GW_CHILD);

CString sText;

for (; pChild; )
{
pChild->GetWindowText(sText);
if (sText == _T("deg"))
pChild->SetWindowText("mdeg");

pChild = pChild->GetNextWindow(GW_HWNDNEXT);
}
__________________
借用达朗贝尔的名言:前进吧,你会得到信心!
[url="http://www.dimcax.com"]几何尺寸与公差标准[/url]
huangyhg离线中   回复时引用此帖
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 08:18 PM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多