Wysyłanie informacji przez program do okna

0

A więc próbowałem coś zdziałać, ale wyskoczyły błędy takie jak na screenie, poproszę o dalszą pomoc

http://img820.imageshack.us/img820/4356/bladfindwindow.jpg

 [DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern IntPtr FindWindow(string strClassName, int nptWindowName);

        string lpszParentClass = "Notepad";
            string lpszParentWindow = "Untitled - Notepad";
            string lpszClass = "Edit";
            IntPtr ParenthWnd = new IntPtr(0);
            IntPtr hWnd = new IntPtr(0);
            ParenthWnd = FindWindow(lpszParentClass, lpszParentWindow);
0
  1. Inicjowanie zmiennych, a za chwilę przypisanie im innej wartości nie jest zbyt bystre.
  2. Parent, a nie Parenth :P.
  3. Przytrzymaj kursor nad podkreślonym słowem i pokaże ci się możliwość automatycznego dodania usingu namespace, w jakim się metoda znajduje.
0

Chłopcze drogi, zobacz sobie prototyp FindWindow i porównaj ze swoim...

0

Aha, i ty żeś umieścił deklarację metody w innej metodzie. Przenieś ją na zewnątrz.

0

No dobra, biorąc pod uwagę, że jestem debilem, to prosiłbym o poprawienie tego, a nie odsyłanie mnie do stron, czy sprawdzanie prototypu FindWindow, na który się gapiłem przez ostatnie 30 minut i nie zrozumiałem dlaczego u mnie nie działa.

@Edit

No dobra, teraz wyskakuje blad:

expected class, delegate, enum, interface or struct, odwolujacy sie do IntPtr

0

refresh

0

Co refresh? Wklej cały plik z kodem, tu nie ma wróżek.

0
        [DllImportAttribute("User32.dll")]
        private static extern int FindWindow(String ClassName, String WindowName);


         public static extern int SendMessage(
         int hWnd, // handle to destination window
         uint Msg, // message
         int wParam, // first message parameter
         int lParam // second message parameter
         );
   





     public int hWnd;

        private void timer1_Tick(object sender, EventArgs e)
        {
            hWnd = FindWindow(null, "Lineage II");
            if (hWnd > 0)
            {
                MessageBox.Show("Znalazlem okno");
            }
            else
            {
                MessageBox.Show("Window Not Found!");
            }
            SendMessage(hWnd, 0x0100, Convert.ToInt32(textBox1.Text), 0);
            SendKeys.Send(textBox1.Text);
        }

SendMessage nie dziala.

0

Witam! Pokombinowalem z tym jeszcze i wyszlo mi takie cos jak nizej, niestety wiadomosc mimo niby wyslania, nie dociera do programu.

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

        [DllImport("User32.Dll", EntryPoint = "PostMessageA", SetLastError = true)]
        static extern bool PostMessage(IntPtr hWnd, uint msg, int wParam, int lParam);

        [DllImport("user32.dll")]
        static extern byte VkKeyScan(char ch);

        const uint WM_KEYDOWN = 0x100;
            Process[] procs = Process.GetProcessesByName(textBox9.Text);
            foreach (Process proc in procs)
            {
                // wyszukaj okno o glownej nazwie
                if (proc.MainWindowTitle == textBox10.Text)
                {
                    // zlap uchwyt okna
                    IntPtr hWnd = FindWindowEx(proc.MainWindowHandle, IntPtr.Zero, "edit", null);
                    MessageBox.Show("Mam okno!");
                    // wyslij stringa do okna
                    string s = "s";
                    for (int i = 0; i < s.Length; i++)
                    {
                        if
                          (PostMessage(hWnd, WM_KEYDOWN, VkKeyScan(s[i]), 0) == true)
                            MessageBox.Show("Wysłałem!"); 
                     
                    }
                    break;
                }
            } 
0

Kolejna taka generalna przerobka, lecz tym razem dziala mi to na ASCII, troche jest to klopotliwe, czy ktos moze podpowiedziec jak mam zrobic w takim wypadku nacisniecie np ALT + 10 ?

        [DllImport("user32.dll", SetLastError = true)]
        static extern IntPtr FindWindow(String ClassName, String WindowName);

        [DllImport("User32.Dll", EntryPoint = "PostMessageA", SetLastError = true)]
        static extern bool PostMessage(IntPtr hWnd, uint msg, int wParam, int lParam);
 
        private void button3_Click(object sender, EventArgs e)
        {
             // zlap uchwyt okna
             IntPtr hWnd = FindWindow("l2UnrealWWindowsViewportWindow", "Lineage II");
             // wyslij stringa do okna
             PostMessage(hWnd, WM_KEYDOWN, 65, 0);
                        
        } 

1 użytkowników online, w tym zalogowanych: 0, gości: 1