模拟键盘事件,在Windows上远程执行Linux命令

背景:

1.模拟键盘事件
System.Windows.Forms.SendKeys
以下是   SendKeys   的一些特殊键代码表。  
  键   代码    
  BACKSPACE   {BACKSPACE}、{BS}   或   {BKSP}    
  BREAK   {BREAK}    
  CAPS   LOCK   {CAPSLOCK}    
  DEL   或   DELETE   {DELETE}   或   {DEL}    
  DOWN   ARROW(下箭头键)   {DOWN}    
  END   {END}    
  ENTER   {ENTER}   或   ~    
  ESC   {ESC}    
  HELP   {HELP}    
  HOME   {HOME}    
  INS   或   INSERT   {INSERT}   或   {INS}    
  LEFT   ARROW(左箭头键)   {LEFT}    
  NUM   LOCK   {NUMLOCK}    
  PAGE   DOWN   {PGDN}    
  PAGE   UP   {PGUP}    
  PRINT   SCREEN   {PRTSC}(保留,以备将来使用)    
  RIGHT   ARROW(右箭头键)   {RIGHT}    
  SCROLL   LOCK   {SCROLLLOCK}    
  TAB   {TAB}    
  UP   ARROW(上箭头键)   {UP}    
  F1   {F1}    
  F2   {F2}    
  F3   {F3}    
  F4   {F4}    
  F5   {F5}    
  F6   {F6}    
  F7   {F7}    
  F8   {F8}    
  F9   {F9}    
  F10   {F10}    
  F11   {F11}    
  F12   {F12}    
  F13   {F13}    
  F14   {F14}    
  F15   {F15}    
  F16   {F16}    
  数字键盘加号   {ADD}    
  数字键盘减号   {SUBTRACT}    
  数字键盘乘号   {MULTIPLY}    
  数字键盘除号   {DIVIDE}    
   
  若要指定与   SHIFT、CTRL   和   ALT  
键的任意组合一起使用的键,请在这些键代码之前加上以下一个或多个代码:  
   
  键   代码    
  SHIFT   +     (SHIFT=”+”)
  CTRL   ^     (CTRL=”^”) 如果输入
  ALT   %    
private void button1_Click(object sender, System.EventArgs e)

公司的邮件服务器是Linux+AD的,因为所有用户都在AD里面,所以当建了一个用户以后还得SSH到Linux服务器上建个邮箱目录,非常麻烦。所以准备写一个程序一次性搞定。

        {//英文输入           
this.richTextBox1.Focus(); 
                                                       for(int
i=65;i<91;i++)        
    {                char Letter=(char)i;               
SendKeys.Send(Letter.ToString());               
System.Threading.Thread.Sleep(100);                       
SendKeys.Flush();            }                    for(int
i=97;i<123;i++)            {                char
Letter=(char)i;               
SendKeys.Send(Letter.ToString());               
System.Threading.Thread.Sleep(100);               
SendKeys.Flush();            }                }         private void
button3_Click(object sender, System.EventArgs e)       
{//数字输入           
this.richTextBox1.Focus();                                                       
for(int i=0;i<10;i++)            {                               
SendKeys.Send(i.ToString());               
System.Threading.Thread.Sleep(100);                       
SendKeys.Flush();            }                        }         private
void button4_Click(object sender, System.EventArgs e)       
{//Backspace            this.richTextBox1.Focus();           
SendKeys.Send(“{Backspace}”);                }         private void
button5_Click(object sender, System.EventArgs e)       
{//Home            this.richTextBox1.Focus();           
SendKeys.Send(“{Home}”);                        }         private void
button6_Click(object sender, System.EventArgs e)       
{//End            this.richTextBox1.Focus();           
SendKeys.Send(“{End}”);                }         private void
button7_Click(object sender, System.EventArgs e)       
{//Enter            this.richTextBox1.Focus();           
SendKeys.Send(“{Enter}”);                }         private void
button8_Click(object sender, System.EventArgs e)       
{//Delete            this.richTextBox1.Focus();           
SendKeys.Send(“{Delete}”);                }         private void
button2_Click(object sender, System.EventArgs e)       
{//Shift+Home            this.richTextBox1.Focus();           
SendKeys.Send(“+{Home}”);                        }         private void
button9_Click(object sender, System.EventArgs e)       
{//Shift+End            this.richTextBox1.Focus();           
SendKeys.Send(“+{End}”);                        }

主要的步骤是1.
增加用户到AD中同时更新用户的mail属于。2.根据建立的用户远程在Linux服务器上的邮件目录建立并设置目录权限。

 看下方法的说明public class SendKeys : System.Object   
System.Windows.Forms 的成员 摘要: 提供将键击发送到应用程序的方法。 
public static void Send ( System.String keys )   
System.Windows.Forms.SendKeys 的成员 摘要: 向活动应用程序发送击键。 
public static void Sleep ( System.TimeSpan timeout )   
System.Threading.Thread 的成员 摘要: 将当前线程阻塞指定的时间。 

如果你的是Linux+MYSQL也是可以的。只是用你的WINDOWS客户端更新MYSQL数据库和在邮件服务器上建用户目录。

public static void Flush (  )    System.Windows.Forms.SendKeys 的成员
2.模拟鼠标有时,我们需在我们的程序中模拟鼠标的移动、点击等动作。——比如,一个再现用户操作的宏,或者一个演示操作方法的Demo程序。那么,我们在.Net中如何实现呢?.Net并没有提供改变鼠标指针位置、模拟点击操作的函数;但是Windows
API提供了。其中一个是:
        [DllImport(“user32.dll”)]        static extern bool
SetCursorPos(int X, int Y); 
该函数可以改变鼠标指针的位置。其中X,Y是相对于屏幕左上角的绝对位置。另一个函数是:
        [DllImport(“user32.dll”)]        static extern void
mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr
extraInfo);
这个函数不仅可以设置鼠标指针绝对的位置,而且可以以相对坐标来设置。另外,该函数还可以模拟鼠标左右键点击、鼠标滚轮操作等。其中的MouseEventFlag是一个基于uint类型的枚举,定义如下:
        [Flags]        enum MouseEventFlag : uint        {           
Move        = 0x0001,            LeftDown    = 0x0002,           
LeftUp      = 0x0004,            RightDown   = 0x0008,           
RightUp     = 0x0010,            MiddleDown  = 0x0020,           
MiddleUp    = 0x0040,            XDown       = 0x0080,           
XUp         = 0x0100,            Wheel       = 0x0800,           
VirtualDesk = 0x4000,            Absolute    = 0x8000        }
关于这两个函数的详细说明,可以查看MSDN Library或者Windows的Platform
SDK文档。下面的演示程序(完整版源代码,VS.Net
2005/C#)演示了使用上面的函数,控制鼠标移动到任务栏并点击“开始”按钮的方法。(该程序使用了FindWindowEx等API函数来查找任务栏及开始菜单)点这里下载
原文地址:

要求:

本文来自CSDN博客,转载请标明出处:

要实现在WINDOWS上远程执行Linux的命令需要使用SSH,但是因为我没有找到在windows上的纯ssh客户端程序,所以我安装了cygwin,并安装了ssh。利用SSH工具来远程执行命令,命令语法如下:
ssh root@192.168.60.128 command

实现:

1.安装cygwin

下载:       选择右上角的 Install or update cygwin

图片 1

  1. 安装

标准的WINDOWS的安装模式,next->next
在下图中增加“中国的站点”速度会快很多

图片 2

在这里选择增加安装ssh,在查找那里输入ssh,注意最后一个openssh,点一下ship变成Install,我的因为安装这了所以自动变为Keep.OK,next直到完成。

图片 3

3、用你常用的编程软件【如果不想这么复杂完合可以使用脚本,更新也可以dsmod命令集完成AD的更新】

我这里使用C#,建一个工程界面如下:注意:Linux服务器IP地址,SSH的用户名、密码等因为是测试,所以我写入到程序里面去了,你完全可以增加TextBox用变量调用或使用xml做成配置文件,如果不怕安全问题你完全直接为Textbox的Text属性写为Defaut值。最好的办法休用ssh的证书自动登录。

图片 4

4、在Linux服务器的/root/下建立test.sh
脚本。注意:我这里调了一extman中的maildirmake.pl文件来建目录,如果你没有可以建每一个目录,目录的结构为:username/Maildir/下有三个文件子文件夹:cur
new tmp三个。

#——-/root/test.sh

# Create by D.W.H 2010.8.10

#!/bin/sh

username=$1

tool=/var/www/extman/tools/maildirmake.pl

dataf=/mail/test.com

$tool $dataf/$username/Maildir

/bin/chown –R vuser.vgroup dataf/$username

#—-END

  1. 为c#程序中的Run事件增加代码

private void button1_Click(object sender, EventArgs e)

{

try

{

System.Diagnostics.Process.Start(“H:\cygwin\cygwin.bat”);

}

catch(Exception ex)

{

MessageBox.Show(ex.Message);

}

发表评论

电子邮件地址不会被公开。 必填项已用*标注