手机
当前位置:查字典教程网 >编程开发 >C#教程 >C# Console利用mspaint打开图像并保存的方法
C# Console利用mspaint打开图像并保存的方法
摘要:本文实例讲述了C#Console利用mspaint打开图像并保存的方法。分享给大家供大家参考,具体如下:调用画图板压缩图片System.Di...

本文实例讲述了C# Console利用mspaint打开图像并保存的方法。分享给大家供大家参考,具体如下:

调用画图板压缩图片

System.Diagnostics.Process process = new System.Diagnostics.Process(); process = System.Diagnostics.Process.Start("mspaint.exe", path); int processId = process.Id; AutomationElement element = FindWindowByProcessId(processId); System.Windows.Forms.SendKeys.SendWait("^s"); //发送 Ctrl + s 键 System.Windows.Forms.SendKeys.SendWait("%{F4}"); // 发送 Alt + F4 键

代码

public static AutomationElement FindWindowByProcessId(int processId) { AutomationElement targetWindow = null; int count = 0; try { Process p = Process.GetProcessById(processId); targetWindow = AutomationElement.FromHandle(p.MainWindowHandle); return targetWindow; } catch (Exception ex) { count++; StringBuilder sb = new StringBuilder(); string message = sb.AppendLine(string.Format("Targetwindowisnotexisting.try#{0}", count)).ToString(); if (count > 5) { throw new InvalidProgramException(message, ex); } else { return FindWindowByProcessId(processId); } } }

模拟键盘输入

SendKeys.SendWait("{F5}"); //发送F5按键 SendKeys.SendWait("^s"); //发送 Ctrl + s 键 SendKeys.SendWait("%{F4}"); // 发送 Alt + F4 键 //按键 代码 BACKSPACE {BACKSPACE}, {BS}, 或 {BKSP} BREAK {BREAK} CAPS LOCK {CAPSLOCK} DEL or DELETE {DELETE} 或 {DEL} DOWN ARROW {DOWN} END {END} ENTER {ENTER}或 ~ ESC {ESC} HELP {HELP} HOME {HOME} INS or INSERT {INSERT} 或 {INS} LEFT ARROW {LEFT} NUM LOCK {NUMLOCK} PAGE DOWN {PGDN} PAGE UP {PGUP} PRINT SCREEN {PRTSC} RIGHT ARROW {RIGHT} SendKeys.SendWait("+{TAB}"); SendKeys.SendWait("%f");//alt+f SendKeys.SendWait("{Tab}"); SendKeys.SendWait("{Enter}") //多次按键的代码 //为了指定重复键,使用 {key number} 的形式。必须在 key 与 number 之间放置一个空格。//例如,{LEFT 42} 意指 42 次按下 LEFT ARROW 键;{h 10} 则是指 10 次按下 H 键。

Where is the System.Windows.Automation

The UIAutomationClient.dll is located in this folder:

C:Program FilesReference AssembliesMicrosoftFrameworkv3.0

If you can't find in your Add Reference->.Net tab, then you have to use the Browse tab to go to the given path, and add the assembly (Right Click on the References, choose add reference, click browse tab):

完整demo程序代码如下:

using System; using System.Text; using System.Diagnostics; using System.Threading; using System.Windows.Automation; using System.Runtime.InteropServices; using System.Windows; using System.Windows.Forms; namespace UIATest { class Program { static void Main(string[] args) { Process process = Process.Start(@"E:WorkBookATPWpfAppbinDebugWpfApp.exe"); int processId = process.Id; AutomationElement element = FindElementById(processId, "textBox1"); SendKeys sendkeys = new SendKeys(); sendkeys.Sendkeys(element, "Sending keys to input data"); Console.WriteLine(sendkeys.ToString()); sendkeys.Sendkeys(element, sendkeys.ContextMenu); Console.WriteLine(sendkeys.ToString()); Console.WriteLine("Test finised."); } /// <summary> /// Get the automation elemention of current form. /// </summary> /// <param name="processId">Process Id</param> /// <returns>Target element</returns> public static AutomationElement FindWindowByProcessId(int processId) { AutomationElement targetWindow = null; int count = 0; try { Process p = Process.GetProcessById(processId); targetWindow = AutomationElement.FromHandle(p.MainWindowHandle); return targetWindow; } catch (Exception ex) { count++; StringBuilder sb = new StringBuilder(); string message = sb.AppendLine(string.Format("Target window is not existing.try #{0}", count)).ToString(); if (count > 5) { throw new InvalidProgramException(message, ex); } else { return FindWindowByProcessId(processId); } } } /// <summary> /// Get the automation element by automation Id. /// </summary> /// <param name="windowName">Window name</param> /// <param name="automationId">Control automation Id</param> /// <returns>Automatin element searched by automation Id</returns> public static AutomationElement FindElementById(int processId, string automationId) { AutomationElement aeForm = FindWindowByProcessId(processId); AutomationElement tarFindElement = aeForm.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.AutomationIdProperty, automationId)); return tarFindElement; } } }

希望本文所述对大家C#程序设计有所帮助。

【C# Console利用mspaint打开图像并保存的方法】相关文章:

C#: 引用变量与数值变量的区别

深入C# 内存管理以及优化的方法详解

c#启动EXE文件的方法实例

C#访问PostGreSQL数据库的方法

C#中如何执行存储过程方法

C#计算代码执行时间的方法

C# 格式化字符首字母大写的方法

C#将dll打包到程序中的具体实现

C#生成sitemap站点地图的方法

Winform跨线程操作的简单方法

精品推荐
分类导航