delphi模拟按键实现粘贴快捷键ctrl+V.keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);keybd_event(ord(''V''), MapVirtualKey(ord(''V''), 0), 0, 0);keybd_event(ord(''V''), MapVirtualKey(ord(''V''), 0), KEYEVENTF_KEYUP, 0);keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP, 0);以上代码delphi7亲测可用。 用Delphi模拟键盘输入/鼠标点击 - xiaoma的日志 - 网易博客用Delphi模拟键盘输入/鼠标点击。keybd_event($49,0,KEYEVENTF_KEYUP,0);例子1:模拟按下''A''键 keybd_event(65,0,0,0); keybd_event(65,0,KEYEVENTF_KEYUP,0);例子2:模拟按下''ALT+F4''键 keybd_event(18,0,0,0); keybd_event(115,0,0,0); keybd_event(115,0,KEYEVENTF_KEYUP,0); keybd_event(18,0,KEYEVENTF_KEYUP,0); delphi编程开启和关闭小键盘。{for Win95/98} if state then ks[key] := ks[key] or 1 else ks[key] := ks[key] and 254;keybd_event(key, ScanCode, {KEYEVENTF_EXTENDEDKEY} 0, 0);{Simulate a key release} keybd_event(key, ScanCode, {KEYEVENTF_EXTENDEDKEY or } KEYEVENTF_KEYUP, 0);开启小键盘:SwitchToggleKey(VK_NUMLOCK,true); keybd_event(VK_CONTROL,NULL,NULL,NULL);keybd_event(''V'',NULL,NULL,NULL);keybd_event(''V'',NULL,KEYEVENTF_KEYUP,NULL);keybd_event(VK_CONTROL,NULL,KEYEVENTF_KEYUP,NULL);keybd_event(VK_MENU,NULL,NULL,NULL);keybd_event(''S'',NULL,NULL,NULL);keybd_event(''S'',NULL,KEYEVENTF_KEYUP,NULL);keybd_event(VK_MENU,NULL,KEYEVENTF_KEYUP,NULL); keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0);//此处可以用 'A', (BYTE)65, 用'a'不起作用. keybd_event('A', (BYTE)0, KEYEVENTF_KEYUP,0); keybd_event(VK_CONTROL, (BYTE)0, KEYEVENTF_KEYUP,0);keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP ,0);input[0].ki.wVk = input[3].ki.wVk = VK_LWIN;input[0].ki.time = input[1].ki.time = input[2].ki.time = input[3].ki.time = GetTickCount(); Public Sub SetNumLock(ByVal bLock As Boolean) Dim Check As Boolean, ScanCode As Long Check = CBool(GetKeyState(vbKeyNumlock)) If Check bLock Then ScanCode = MapVirtualKey(vbKeyNumlock, 0) Call keybd_event(vbKeyNumlock, ScanCode, 0, 0) Call keybd_event(vbKeyNumlock, ScanCode, KEYEVENTF_KEYUP, 0) End IfEnd Sub. 通过调用api来模拟键盘或鼠标操作。keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0), KEYEVENTF_KEYUP,0);(1) 模拟鼠标动作API函数mouse_event,它可以实现模拟鼠标按下和放开等动作。VOID mouse_event( DWORD dwFlags, // 鼠标动作标识。获取当前鼠标位置使用GetCursorPos()函数,设置当前鼠标位置使用。通常游戏角色的行走都是通过鼠标移动至目的地,然后按一下鼠标的按钮就搞定了。 keybd_event(VK_LWIN,0,0,0);keybd_event(VK_LWIN,0,KEYEVENTF_KEYUP,0);4.1 隐藏任务栏 隐藏 ::ShowWindow (::FindWindow("Shell_TrayWnd",NULL),SW_HIDE); or ::ShowWindow (::FindWindow("Shell_TrayWnd",NULL),SW_HIDE); 显示 ::ShowWindow (::FindWindow("Shell_TrayWnd",NULL),SW_SHOW); or ::ShowWindow (::FindWindow("Shell_TrayWnd",NULL),SW_SHOW); SendMessage(h,WM_SETTEXT,255,Integer(PChar(''我来测度了'')));WM_CUT、WM_COPY和WM_PASTE 剪切,复制,粘帖。★WM_SETTEXT 应用程序发送此消息来设置一个窗口的文本。★WM_GETTEXT 应用程序发送此消息来复制对应窗口的文本到缓冲区。★WM_QUERYOPEN 用户窗口恢复以前的大小位置时,把此消息发送给某个图标。★WM_QUERYENDSESSION 消息后,此消息发送给应用程序,通知它对话是否结束。SendMessage(hwnd,WM_GETTEXT,256,lparam); “聪明的程序员用Delphi!”现在,真是有越来越多的人开始用Delphi了。procedure TForm2.→将焦点上移一行:For i:=0 to ListView1.Items.Count-1 Do If (ListView1.Items[i].Selected) and (i>0) then begin ListView1.SetFocus; ListView1.Items.Item[i-1].Selected := True; end;不过在Delphi6中,ListView多了一个ItemIndex属性,所以只要ListView1.SetFocus;ListView1.ItemIndex:=3;就能设定焦点了。 答: procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=vk_down then perform(WM_NEXTDLGCTL,0,0) else if key=vk_up then perform(WM_NEXTDLGCTL,1,0); end; ================================ 12、如何用delphi5实现读文本文件指定的一行,并得到文本文件的总行数? 如何在自己的系统中打开并关闭外部程序 如何在自己的系统中打开并关闭外部程序 大家知道,在一个大型复杂的系统中,有时会调用一些外部程序来帮助我们完成某些特定功能。其中ExeHandle是程序窗体的句柄,但如何得到窗体句柄呢?//获得句柄-->标题确定 ExeHandle:=findWindow(nil,''文件管理器'');//返回句柄 //关闭程序 if ExeHandle0 then SendMessage(ExeHandle,WM_Close,0,0) else. //创建Directshow中的FilterGraph COM对象并返回IGraphBuilder接口 VideoRender:=createcomobject(CLSID_VideoMixingRenderer) as IBaseFilter; //创建Directshow中的VideoMixingRenderer Filter COM对象并返回IBaseFilter接口 SampleGrabber:=createcomobject(CLSID_SampleGrabber) AS ISampleGrabber; //创建Directshow中的SampleGrabber Filter COM对象并返回ISampleGrabber接口。 SText_Buffer.sprintf("鼠标位置:X:%dY:%d",Mouse_Position.x,Mouse_Position.y); Label_QQ_Title->Caption=SText_Buffer;SetCursorPos(QQ_Rect.left+(QQ_Rect.right-QQ_Rect.left)/2,QQ_Rect.top+160);//检测是否出现异常 GetWindowText(GetForegroundWindow(),CText_Buffer,255); SText_Buffer.sprintf("%s",CText_Buffer);keybd_event(VK_MENU,MapVirtualKey(VK_MENU,0),KEYEVENTF_KEYUP,0); Delphi / VCL组件开发及应用 - CSDN社区 c... delphi 限制FORM窗体为固定的大小在FORM私有声明部分加上如下一行:procedure WMGetMinMaxInfo( var Message:TWMGetMinMaxInfo );在声明部分加上如下几行:procedure TForm1.WMGetMinMaxInfo( var Message :TWMGetMinMaxInfo );begin.{最大化时宽度}ptMaxSize.Y := 200; {最大化时高度}ptMaxPosition.X := 99; {最大化时左上角横坐标}ptMaxPosition.Y := 99; {最大化时左上角纵坐标}end; delphi制作透明窗体procedure CreateParams(var Params: TCreateParams); override; //重载 CreateParams 过程的实现。//先继承原来的 CreateParams 过程inherited;//然后修改 Param.ExStyle 的值,使窗体具有透明效果Params.ExStyle := Params.ExStyle or WS_EX_TRANSPARENT;end;//将画布的笔刷样式改成 bsClear 以及时清除窗体原来的内容,这样窗体就有透明效果Canvas.Brush.Style := bsClear;end; Delphi编程模拟鼠标操作Delphi编程模拟鼠标操作时间:2011-5-26来源:yang 作者: peng点击: 126次。mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);然后通过mouse_event (MOUSEEVENTF_LEFTDOWN,0,0,0,0)语句在(10,10)坐标处按下鼠标左键。最后不要忘了通过mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0)语句释放鼠标左键。右键单击和左键单击的原理一致,只不过mouse_event函数中的参数分别替换为MOUSEEVENTF_RIGHTDOWN和MOUSEEVENTF_RIGHTUP。 Keybd_event 和mouse_event 参数之解释Windows提供了一个模拟键盘API函数Keybd_event(),使用该函数可以相应的屏蔽键盘的动作。 组件是对象的一种。二、读写对象(Filer)与组件读写机制 Filer对象主要用于存取Delphi的窗体文件和窗体文件中的组件,所以要清楚地理解Filer对象就要清楚Delphi 窗体文件(DFM文件)的结构。在程序开始运行的时候,TReader通过流式对象Stream来读取窗体及组件,因为Delphi在编译程序的时候,利用编译指令{$R *.dfm}已经把DFM文件信息编译到可执行文件中,因此TReader读取的内容实际上是被编译到可执行文件中的有关窗体和组件的信息。 用api(shell)函数实现文件复制(摘至delphi盒子) 实现原理是启动一个应用程序,通过ProcessID得到窗体句柄,然后对其设定父窗体句柄为本程序某控件句柄(本例是窗体内一个Panel的句柄),这样就达成了内嵌的效果。问题1:如果程序有Splash窗体先显示,则实际窗体无法内嵌,因为仅将Splash窗体的父窗体设定为本程序的控件句柄,后续窗体无法设定。以上的基础是,外壳和子窗体都是Delphi程序,都是源码级别#9楼 2011-08-17 13:13 vcc 外壳将多个子窗体定义为窗体数组。 下面这些主题描述了怎样使用Tools API: Tools API概述 编写一个专家类 获得Tools API服务 对文件和编辑器的操作 创建窗体和工程 IDE的专家事件通知 2、 Tools API概述 所有的Tools API声明都在这一个单元里:ToolsAPI。下面的主题讨论了使用Tools API服务接口来工作时一些特定的事项: 使用本地IDE对象 调试专家 接口版本号 7、 使用本地IDE对象 专家可以完全地访问IDE的主菜单、工具栏、Action列表和图像列表。 在Delphi中开发使用多显示器的应用程序[转]在Delphi中开发使用多显示器的应用程序[转]作者:fence | 出处:博客园 | 2011/11/10 9:08:41 | 阅读13次 在Delphi中开发使用多显示器的应用程序 Windows可以将多个显示器映射为虚拟桌面,使我们可以利用这一点设计出方便工作的应用程 序。为了不使一个窗体显示在两个显示器之间等原因的考虑,Windows将一个显示器作为主显示器。Windows为多显示器应用程序的开发提供了一组API。 在Delphi中开发使用多显示器的应用程序在Delphi中开发使用多显示器的应用程序 作者:WAZptROE 来源:中国宽带 发布时间:2009-2-6 12:39:51 关键字/核心提示:[标签:副标题]Windows可以将多个显示器映射为虚拟桌面,使我们可以利用这一点设计出方便工作的应用程序。在显示属性中可以根据显示器的物理位置任意排布这些显示器。为了不使一个窗体显示在两个显示器之间等原因的考虑,Windows将一个显示器作为主显示器。 其方法和属性集中包括了 Windows操作系统中创建、运行和销毁应用程序等既定的基本操作和属性,因此在用Delphi编写 Windows应用程序时简化了用户和Windows环境之间的接口。在应用程序中,可以调用方法Application.MainForm.Close来终止应用程序运行,可以获取Application.MainForm.Top、Application.MainForm.Left 等属性的值从而确定当前活动窗口的位置以及尺寸等。应用程序将第一个调用CreateForm 创建的窗体默认为工程的主窗体。 |
|