怎么用C#实现一个对另外程序发键盘消息,就象按建精灵功能的.只是那个不能切屏

yoyolee_lcj 2006-10-29 05:31:26
看过用SendMessage不过没有什么完整点例子,看了一头雾水
...全文
164 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yoyolee_lcj 2006-10-29
  • 打赏
  • 举报
回复
谢谢楼上的,我去研究了
pfworld 2006-10-29
  • 打赏
  • 举报
回复
转一个帖子:

如何用程序实现键盘和鼠标的模拟?
there is an example how to use keybd_event in C#,maybe help you
using System;
using System.Runtime.InteropServices;
using System.Text;

namespace ConsoleApplication8{
class Class1{
[STAThread]
static void Main(string[] args){
// Display current status of keys.
Console.WriteLine(
"**BEFORE**\r\nCAP: {0}\r\nSCR: {1}\r\nNUM: {2}",
Keyboard.GetState(VirtualKeys.VK_CAPITAL)?"ON":"OFF",
Keyboard.GetState(VirtualKeys.VK_SCROLL)?"ON":"OFF",
Keyboard.GetState(VirtualKeys.VK_NUMLOCK)?"ON":"OFF"
);
//Toggle all the keys:
Keyboard.SetState(
VirtualKeys.VK_CAPITAL,
!Keyboard.GetState(VirtualKeys.VK_CAPITAL)
);
Keyboard.SetState(
VirtualKeys.VK_SCROLL,
!Keyboard.GetState(VirtualKeys.VK_SCROLL)
);
Keyboard.SetState(
VirtualKeys.VK_NUMLOCK,
!Keyboard.GetState(VirtualKeys.VK_NUMLOCK)
);
// Display new status of keys.
Console.WriteLine(
"\r\n**AFTER**\r\nCAP: {0}\r\nSCR: {1}\r\nNUM: {2}",
Keyboard.GetState(VirtualKeys.VK_CAPITAL)?"ON":"OFF",
Keyboard.GetState(VirtualKeys.VK_SCROLL)?"ON":"OFF",
Keyboard.GetState(VirtualKeys.VK_NUMLOCK)?"ON":"OFF"
);
Console.ReadLine();
}
}
public enum VirtualKeys: byte{
VK_NUMLOCK = 0x90,
VK_SCROLL = 0x91,
VK_CAPITAL = 0x14
}
class Keyboard{
const uint KEYEVENTF_EXTENDEDKEY = 0x1;
const uint KEYEVENTF_KEYUP = 0x2;
[DllImport("user32.dll")]
static extern short GetKeyState(int nVirtKey);
[DllImport("user32.dll")]
static extern void keybd_event(
byte bVk,
byte bScan,
uint dwFlags,
uint dwExtraInfo
);
public static bool GetState(VirtualKeys Key){
return (GetKeyState((int)Key)==1);
}
public static void SetState(VirtualKeys Key, bool State){
if(State!=GetState(Key)){
keybd_event(
(byte)Key,
0x45,
KEYEVENTF_EXTENDEDKEY | 0,
0
);
keybd_event(
(byte)Key,
0x45,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0
);
}
}
}
}
//and you can do mouse_event operation like it.


Top

回复人:seabirdforever(听海) ( ) 信誉:100 2003-3-24 10:46:56 得分:0


?
建议你参考 一下 《Microsoft C#程序设计》(北大出版社,上下册带光盘160元),里面关于 鼠标和键盘的东西有详细的论述


Top

回复人:TheAres(班门斧) ( ) 信誉:162 2003-3-25 0:24:03 得分:50


?

对于模拟键盘,除了利用keybd_event,更简单的是使用sendkeys,而且keybd_event已经被sendinput取代。

具体代码参考:
请问,用C#如何实现模拟键盘输入
http://expert.csdn.net/Expert/topic/1055/1055110.xml?temp=.1404993

对于模拟鼠标,只好用SendInput,
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/KeyboardInput/KeyboardInputReference/KeyboardInputFunctions/SendInput.asp

具体代码参考:
http://groups.google.com/groups?hl=zh-CN&lr=&ie=UTF-8&oe=UTF-8&threadm=665201c200e8%24e3a1f550%2435ef2ecf%40TKMSFTNGXA11&rnum=3&prev=/groups%3Fq%3Dsendinput%2Bmouse%2Bc%2523%26hl%3Dzh-CN%26lr%3D%26ie%3DUTF-8%26oe%3DUTF-8%26selm%3D665201c200e8%2524e3a1f550%252435ef2ecf%2540TKMSFTNGXA11%26rnum%3D3


在当今数字化时代,网络技术飞速展,互联网成为了我们获取信息、进行学习和工作的重要平台。而随着在线教育的普及,网络考试成为一种常态。然而,为了保证考试的公平性,一些在线考试系统引入了对用户屏幕切换次数的限制措施,也就是所谓的“切屏检测”。但有时,技术的限制与个人需求之间会生冲突,例如在需要频繁切换页面的复杂考试中,用户可能会希望破解这种切屏限制。本文将探讨如何在保持学术诚信的前提下,理解并应对在线考试中的切屏限制问题。 理解切屏限制的目的很重要。在线考试系统中的切屏检测功能主要是为了防止作弊行为。在考试过程中,考生如果频繁切换屏幕,可能会被怀疑在寻求外部帮助或查阅资料,这显然破坏了考试的公平性。因此,切屏限制在技术上被设计为一种保障机制。 然而,考生在进行在线考试时也可能因为各种原因需要合法的切换屏幕。例如,在解决某些题目时,可能需要参考其他页面的信息或者使用相关的计算器工具,这时,切屏限制就可能成为他们完成考试的障碍。因此,有些考生可能会寻求突破这一限制的方法。 通过技术手段破解切屏限制,通常涉及对浏览器进行一些编程操作。由于谷歌浏览器和火狐浏览器提供了较为开放的API接口和相对灵活的用户脚本支持,它们成为了实现该技术操作的首选平台。具体的实现方法包括但不限于创建特定的书签和执行JavaScript代码,以禁用或绕过切屏检测。 具体操作步骤可能如下: 1. 选择支持执行JavaScript代码的浏览器,如谷歌浏览器或火狐浏览器。 2. 在浏览器的书签栏中创建一个新的书签,用于存放后续要执行的代码。 3. 将特定的JavaScript代码复制粘贴到新建书签的URL字段中,这段代码的作用是修改浏览器窗口的`onblur`事件处理器,将其设置为`null`,以此来绕过切屏限制。 4. 进入在线考试界面开始考试,如同正常考试流程。 5. 考试中,当需要切换屏幕时,点击预先设置好的书签,执行脚本,从而达到破解切屏限制的目的。 尽管技术上可以实现这样的突破,但必须强调的是,任何企图作弊的行为都是不被支持的。不仅违反了在线考试平台的公平竞争原则,更可能触犯相关的法律法规,导致考试成绩无效或更严重的后果,如影响个人的学术诚信记录和未来的学习或工作机会。 因此,考生应该自觉维护考试的公平性,避免使用此类技术手段。如果确实有合法且必要的需求,应该主动与考试组织方沟通,寻求官方的支持和解决方案。 总结来说,尽管技术的展为人们提供了极大的便利,但在使用这些技术时必须遵循道德和法律的界限。无论是在线考试还是其他领域,维护公平性都是构建良好社会秩序的基石。而对于技术的学习和应用,我们应该将其引导至积极正面的方向,共同营造一个公正、诚信的网络环境。

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧