2017-01-05 4 views
0

Я долгое время боролся с этим и не мог получить ответа, который я понимаю. Я новичок в C#.Findwindowex от ручки C#

Таким образом, я запускаю приложение (для конкретного Accpac), тогда мне нужно отправить имя пользователя через sendkeys/sendmessage в дочернее окно. Я получил ручку childwindow, но я не могу заставить его работать:. IntPtr (00020380), я получаю ошибку «идентификатор ожидаемого»

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Threading.Tasks; 
    using System.Runtime.InteropServices; 
    using System.Diagnostics; 
    using System.Windows.Forms; 
    using System.Threading; 

    namespace myNamespace 
    { 
     class StartAccpac 
     { 
      [DllImport("user32.dll", SetLastError = true)] 
      static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 

      [DllImport("user32.dll", SetLastError = true)] 
      static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow); 

      public static void Main3() 
      { 
       //START ACCPAC 
       //Process.Start("C:\\Programs\\Accpac\\runtime\\accpac.exe"); 
       IntPtr hwnd = IntPtr.Zero; 
       IntPtr hwndChild = IntPtr.Zero; 

       //Get a MAIN HANDLE 
       hwnd = FindWindow(null, "Open Company"); 
       hwndChild = FindWindowEx(hwnd, IntPtr.(00020380), null, null); <---- ERROR 
      } 

     } 
    } 


[![enter image description here][1]][1] 
[![enter image description here][2]][2] 
[![enter image description here][3]][3] 
+2

Попробуйте 'new IntPtr (00020380)', хотя если это действительно шестнадцатеричный номер, вам понадобится 'new IntPtr (0x00020380)' – Lloyd

+0

Спасибо! Можете ли вы сказать это как ответ, чтобы я мог принять – Wilest

ответ

0

Ваша проблема здесь:

IntPtr.(00020380)

Что вам нужно сделать, это что-то вроде этого:

new IntPtr(00020380)

Однако я подозреваю, что, будучи восемь цифр это шестнадцатеричное число, так что вы могли бы также рассмотреть следующие вопросы:

new IntPtr(0x00020380)

поиграйте с тем, что произойдет.

Смежные вопросы