//汇编代码
KeyBoardProc proc VKEY:UINT
LOCAL bScan:DWORD
invoke MapVirtualKey,VKEY,0
mov bScan,eax
mov ebx,VKEY
sub bl,91
invoke keybd_event,ebx,bScan,0,0
invoke SleepEx,10,TRUE
invoke keybd_event,ebx,bScan,KEYEVENTF_KEYUP,0
invoke Sleep,10
ret//C#代码
private void SendKeys(uint keys)
{
uint bScan = MapVirtualKey(keys, 0);
uint k = (keys - 91) & 0x000000ff;
keybd_event(k, bScan, 0, 0);
SleepEx(10, true);
keybd_event(k, bScan, 2, 0);
Sleep(10);
}
都是模拟按键. 汇编代码成功. C#代码失败.. 纠结.
调试C#代码 和汇编代码
发现keybd_event函数传递的值完全一样.为什么会出现不同结果??
高手呢? 高高手呢? 来看看吧.
解决方案 »
- 判断集合中是否存在重复项
- AJAxcontroltoolkit安装问题
- 如何在当用户按下 Ctrl + ~ 的时候执行一段程序,用控制台程序来做,不管系统在运行其他什么软件,只要按就执行一段我想执行的程序?
- 【新手求解】有关多线程的同步
- 求助Select语句如何实现多表查询
- 问个丢人的问题,HOHO!谁帮我写一句上来。
- 小女子在线急等:如何使MDI窗体的子窗体拥有独立的菜单,运行时不与主菜单合并?
- 未将对象引用设置到对象的实例
- object类型和多线程有什么关系哈?
- Dictionary 和 DataTable 相关.要求性能。求大神!
- C#操作SQL Server 2005的怪异情况
- 求助已有打开的与此命令相关联的 DataReader,必须首先将它关闭。
技持楼主sjzlxd
(最近老迷糊)
public static extern uint MapVirtualKey(uint uCode, uint uMapType); [DllImport("User32.dll", EntryPoint = "keybd_event")]
public static extern void keybd_event(uint bVk, uint bScan, Int32 dwFlags, Int32 dwExtraInfo); [DllImport("kernel32 .dll")]
public static extern uint SleepEx(uint dwMilliseconds, bool bAlertable); [DllImport("kernel32 .dll")]
public static extern uint Sleep(uint dwMilliseconds);
刚才忘记贴函数声明了.我有现成的汇编代码, 我用RadASM调试的
都是调用同一个api 都是传递一样的参数. 为什么汇编的有效果 C#的没效果?
现在讨论的是这个问题.
c#当然“无辜”啦!
比如说,如果别人跟你讨论一个使用c#的项目源代码中的设计问题,你给人家说“我还会写几行汇编语句呢!
不知楼上要表达什么意思,
是叫楼主不要搞汇编吗?
在这里kernel32后面多了个空格... 丢人啊.. 无语了. 埋头睡觉了.