查找特定的打开文件对话框并填充

时间:2012-08-15 13:21:38

标签: vb.net window find findwindow identify

我正在尝试找到一种方法来识别“打开文件”对话框并将消息发送到“文件名”字段。之后需要向按钮发送“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和类。希望这对人们有所帮助。我的下一步将是确定我希望将数据发送到的字段。

1 个答案:

答案 0 :(得分:-1)

如果你可以在VB.Net中这样做,那么只需使用这个链接:)
http://www.developerfusion.com/tools/convert/vb-to-csharp/
将您的VB.net代码转换为C#。

请投票,如果我的答案有用。