社区
C#
帖子详情
C#能不能实现发送ctrl+s这样的组合键盘命令
junsanrao
2009-02-27 02:01:46
做一个程序,目的是获取键盘的操作然后再自动发送ctrl+s命令即保存
假如当前是word应用程序,我运行C#的应用程序则word就会执行了ctrl+s命令
谢谢大家
...全文
347
6
打赏
收藏
C#能不能实现发送ctrl+s这样的组合键盘命令
做一个程序,目的是获取键盘的操作然后再自动发送ctrl+s命令即保存 假如当前是word应用程序,我运行C#的应用程序则word就会执行了ctrl+s命令 谢谢大家
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lhq545
2009-03-13
打赏
举报
回复
实现Ctrl+S保存:
在keydown事件中,ctrl捕捉后再预定捕捉S键事件:
例子(ArcGIS中的,winform程序差不多)
/// <summary>
/// 保存当前编辑Ctrl+S
/// </summary>
/// <param name="e"></param>
public void SaveEdit(IMapControlEvents2_OnKeyDownEvent e)
{
if (e.keyCode == (int)Keys.ControlKey)
{
m_App.MainMapControl.OnKeyDown +=
new IMapControlEvents2_Ax_OnKeyDownEventHandler(ForCtrlAndS_OnKeyDown);
}
}
private void ForCtrlAndS_OnKeyDown(object sender, IMapControlEvents2_OnKeyDownEvent e)
{
if (e.keyCode == (int)Keys.S)
m_App.SaveEdit();
}
junsanrao
2009-02-27
打赏
举报
回复
请你们也把自己知道的拿出来分享下喽。谢谢
junsanrao
2009-02-27
打赏
举报
回复
谢谢,我正在找,到是之前有个人教了我下面的代码是捕获鼠标的,你们看下
using System;
using System.Threading;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace MouseControl1
{
class MouseControl
{
/// <summary>
/// 鼠标控制参数
/// </summary>
const int MOUSEEVENTF_LEFTDOWN = 0x2;
const int MOUSEEVENTF_LEFTUP = 0x4;
const int MOUSEEVENTF_MIDDLEDOWN = 0x20;
const int MOUSEEVENTF_MIDDLEUP = 0x40;
const int MOUSEEVENTF_MOVE = 0x1;
const int MOUSEEVENTF_ABSOLUTE = 0x8000;
const int MOUSEEVENTF_RIGHTDOWN = 0x8;
const int MOUSEEVENTF_RIGHTUP = 0x10;
/// <summary>
/// 鼠标的位置
/// </summary>
public struct PONITAPI
{
public int x, y;
}
[DllImport("user32.dll")]
public static extern int GetCursorPos(ref PONITAPI p);
[DllImport("user32.dll")]
public static extern int SetCursorPos(int x, int y);
[DllImport("user32.dll")]
public static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
[STAThread]
static void Main()
{
PONITAPI p = new PONITAPI();
//GetCursorPos(ref p);
//Console.WriteLine("鼠标现在的位置X:{0}, Y:{1}", p.x, p.y);
//Console.WriteLine("Sleep 1 sec...");
//Thread.Sleep(1000);
p.x = 40;
p.y = 30;
//p.x = (new Random()).Next(Screen.PrimaryScreen.Bounds.Width);
//p.y = (new Random()).Next(Screen.PrimaryScreen.Bounds.Height);
Console.WriteLine("把鼠标移动到X:{0}, Y:{1}", p.x, p.y);
//System.Windows.Forms.Cursor.Position = new System.Drawing.Point(5, 5);
//Console.ReadKey();
SetCursorPos(p.x, p.y);
GetCursorPos(ref p);
Console.WriteLine("鼠标现在的位置X:{0}, Y:{1}", p.x, p.y);
Console.WriteLine("Sleep 1 sec...");
Thread.Sleep(1000);
Console.WriteLine("在X:{0}, Y:{1} 按下鼠标左键", p.x, p.y);
mouse_event(MOUSEEVENTF_LEFTDOWN, p.x, p.y, 0, 0);
Console.WriteLine("Sleep 1 sec...");
Thread.Sleep(1000);
mouse_event(MOUSEEVENTF_LEFTDOWN, p.x, p.y, 0, 0);
Console.WriteLine("在X:{0}, Y:{1} 释放鼠标左键", p.x, p.y);
mouse_event(MOUSEEVENTF_LEFTUP, p.x, p.y, 0, 0);
Thread.Sleep(1000);
p.x = 50;
p.y = 55;
SetCursorPos(p.x, p.y);
GetCursorPos(ref p);
Console.WriteLine("在X:{0}, Y:{1} 按下鼠标左键", p.x, p.y);
mouse_event(MOUSEEVENTF_LEFTDOWN, p.x, p.y, 0, 0);
Console.WriteLine("Sleep 1 sec...");
Thread.Sleep(1000);
Console.WriteLine("在X:{0}, Y:{1} 释放鼠标左键", p.x, p.y);
mouse_event(MOUSEEVENTF_LEFTUP, p.x, p.y, 0, 0);
//Console.WriteLine("程序结束,按任意键退出....");
//Console.ReadKey();
}
}
}
hhxxcj
2009-02-27
打赏
举报
回复
可以,但是我忘了是怎么弄的了,你可以找找看
帮你顶着
TechStone
2009-02-27
打赏
举报
回复
貌似在KEYPRESS的参数E的KEYCODE还是KEYVALUE属性可以区分出来吧
apoclast
2009-02-27
打赏
举报
回复
用win32的API
模拟
发送
Ctrl
+Alt+Del 快捷键
对于开启了安全登陆的窗口工作站 Server 系统,需要在登陆时按下
Ctrl
+ Alt + Del 才能成功登陆。此时,研究一种编程模拟
发送
组合
热键以便于验证安全注意序列(SAS)是有必要的,通过研究发现
发送
这样子的快捷键往往需要一些特殊的技巧,因为他它和一般的快捷键不同(诸如,Win + D)。
c#
ctrl
-c 转义符_如何在Windows
命令
提示符下启用
CTRL
+ C /
Ctrl
+ V进行粘贴
c#
ctrl
-c 转义符One of the more irritating problems with the Windows command prompt is that you can’t paste anything into the window using the keyboard easily—it requires using the mouse. Here’s how to f...
发送
linux
键盘
消息,在
C#
程序中模拟
发送
键盘
按键消息
using System.Runtime.InteropServices;引入
键盘
事件函数[DllImport("user32.dll")]public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);参数:bVk:定义一个虚拟键码。键码值必须在1~254之间。bScan:定义该键...
AutoIt按键
发送
列表
按键
发送
列表 Send( “keys” [, flag] )
命令
参考. ^
Ctrl
! Alt + Shift # Win AutoIt 可
发送
所有 ASCII 码及扩展 ASCII 码字符 (0-255), 要
发送
UNICODE 字符, 必须选用 “ASC” 选项加上要
发送
的字符代码(参考下面 {ASC} 示例). 下例为
发送
ASCII 字符 A ( ALT+065, 相当于按下 ALT 键并顺序按下数字
键盘
的 0, 6, 5): Send("{ASC 065}") (使用
向外部程序
发送
按键(或
组合
键)
向外部程序
发送
按键(或
组合
键)我想在A程序正常操作时,由我的程序C向最小化的B程序
发送
按键或
组合
键(譬如在使用Word时,有一个最小化到任务栏上的IE窗口,我想刷新(F5)或保存(
CTRL
+S)它)我的想法是,先找到窗口的句柄,然后用Sendmessage向该窗口
发送
按键消息:int WM_KEYDOWN = 0X100;//按键按下时int WM_KEYUP = 0X101;//按键放开时int
C#
110,539
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章