我一個vb.net項目工作,我有一個「開始」,並在FormPost.exe「暫停」按鈕從命令propmpt執行按鈕
我想安排一個批處理過程每天運行在凌晨4點。
如何運行命令提示符來執行FormPost.exe,並且它們都通過命令提示符單擊「開始」按鈕?
請讓我知道。由於
我一個vb.net項目工作,我有一個「開始」,並在FormPost.exe「暫停」按鈕從命令propmpt執行按鈕
我想安排一個批處理過程每天運行在凌晨4點。
如何運行命令提示符來執行FormPost.exe,並且它們都通過命令提示符單擊「開始」按鈕?
請讓我知道。由於
你可以做的是此覆蓋的OnControlCreateMethod()如下:
Public Class Form1
Public Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
End Sub
Protected Overrides Sub OnCreateControl()
MyBase.OnCreateControl()
If Environment.CommandLine.Contains("/clickme") Then
ClickMeButton.PerformClick()
// ... need to wait here until click event handler has finished, e.g.
// using synchronization objects
Close()
End If
End Sub
End Class
如果傳遞「/ clickme」在命令行上會執行點擊事件,然後關閉窗體。如果表單是應用程序中的唯一一個,它將終止。
但請注意,您將需要添加一些等待click事件處理程序完成的邏輯。儘量避免使用投票或睡眠。請嘗試使用同步對象。
如果這是您的應用程序;你可以修改代碼,以便它檢查你是否從命令行/使用適當的參數運行它並激發按鈕click()本身。這將是最簡單的方法(我認爲約翰的答案顯示了這一點)
如果它不是你的應用程序;你仍然可以完成同樣的事情,但它並不漂亮。您可以編寫代碼,將執行WinForm的,然後激活它(以確保它具有焦點)
Public Shared Sub ActivateWoW()
Dim myApp As Process = Process.GetProcessesByName("MyApp").First
AppActivate(myApp.Id)
End Sub
然後,你可以使用的SendKeys()來模擬與形式的互動。比方說,開始按鈕將兩個「標籤」鍵來進行選擇......
SendKeys.Send("{TAB}{TAB}")
然後快速暫停...
Thread.Sleep(25)
然後按下回車鍵(這是幾乎總是一樣當按鈕被選中時,鼠標點擊良好)
SendKeys.Send("{ENTER}")
如果你想獲得更多的參與,您需要開始使用WIN32 API調用。下面是一個鼠標點擊一些示例代碼...
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
Private Const WM_LBUTTONUP As Long = &H202
Private Const WM_RBUTTONUP As Long = &H205
Private Const WM_LBUTTONDOWN As Long = &H201
Private Const WM_RBUTTONDOWN As Long = &H204
Private Shared Function MakeDWord(ByVal LoWord As Integer, ByVal HiWord As Integer) As Long
Return (HiWord * &H10000) Or (LoWord And &HFFFF&)
End Function
Public Shared Sub SendMouseClick()
Dim Wow As Long = FindWindow("GxWindowClass", "MyWindow")
Dim dWord As Long = MakeDWord(LastX - LastRectX, LastY - LastRectY)
SendMessage(Wow, WM_RBUTTONDOWN, 1&, dWord)
Threading.Thread.Sleep(100)
SendMessage(Wow, WM_RBUTTONUP, 1&, dWord)
End Sub
聽起來,這將更好地工作,作爲一個控制檯應用程序不是作爲一個WinForms應用程序... – PhilPursglove 2011-03-02 21:57:42
是否使用WPF或形式? – Manfred 2011-03-02 21:59:12