我正在尝试找到一种方法来识别“打开文件”对话框并将消息发送到“文件名”字段。之后需要向按钮发送“Enter”键或“Open”命令。
我在VB中这样做,但我确信如果有人可以在C#中提供帮助我也能应付。
我一整天都在挖掘API并提出了几种可能性,但我不熟悉如何在DotNet4中实现它。 我以前在VB6中使用API,但现在看起来有些不同。
如果有人能给我一个小例子,我将不胜感激。
我看过的一些API是FindWindow和FindWindowEx。
编辑:
我发现了一些值得关注的代码。此代码需要在模块内部使用。 当我找到更多答案时,我会发布更多内容。
Imports System.Runtime.InteropServices
Imports System.Text
Module modEnumWindows
Private windowList As New ArrayList
Private errMessage As String
Public Delegate Function MyDelegateCallBack(ByVal hwnd As Integer, ByVal lParam As Integer) As Boolean
Declare Function EnumWindows Lib "user32" (ByVal x As MyDelegateCallBack, ByVal y As Integer) As Integer
Declare Auto Function GetClassName Lib "user32" _
(ByVal hWnd As IntPtr, _
ByVal lpClassName As System.Text.StringBuilder, _
ByVal nMaxCount As Integer) As Integer
Declare Auto Function GetWindowText Lib "user32" _
(ByVal hWnd As IntPtr, _
ByVal lpClassName As System.Text.StringBuilder, _
ByVal nMaxCount As Integer) As Integer
Private Function EnumWindowProc(ByVal hwnd As Integer, ByVal lParam As Integer) As Boolean
'working vars
Dim sTitle As New StringBuilder(255)
Dim sClass As New StringBuilder(255)
Try
Call GetClassName(hwnd, sClass, 255)
Call GetWindowText(hwnd, sTitle, 255)
windowList.Add(sClass.ToString & ", " & hwnd & ", " & sTitle.ToString)
Catch ex As Exception
errMessage = ex.Message
EnumWindowProc = False
Exit Function
End Try
EnumWindowProc = True
End Function
Public Function getWindowList(ByRef wList As ArrayList, Optional ByVal errorMessage As String = "") As Boolean
windowList.Clear()
Try
Dim del As MyDelegateCallBack
del = New MyDelegateCallBack(AddressOf EnumWindowProc)
EnumWindows(del, 0)
getWindowList = True
Catch ex As Exception
getWindowList = False
errorMessage = errMessage
Exit Function
End Try
'wList.Clear()
wList = windowList
End Function
End Module
通过使用它,您将能够识别窗口文本,HWND和类。希望这对人们有所帮助。我的下一步将是确定我希望将数据发送到的字段。
答案 0 :(得分:-1)
如果你可以在VB.Net中这样做,那么只需使用这个链接:)
http://www.developerfusion.com/tools/convert/vb-to-csharp/
将您的VB.net代码转换为C#。
请投票,如果我的答案有用。