Zwischenablage > Notepad starten > einfügen
-
Hallo,
ich habe Daten in die Zwischenablage abgelegt und Notepad per ShellExecute aufgerufen.
Jetzt möchte ich die in der Zwischenablage liegenden Daten sofort in Notepad einfügen.
Habe mir den Zeiger auf das Notepad-Hauptfenster geholt und es mit
SendMessage(WM_PASTE, 0, 0) versucht, klappt aber nicht.Wer kann mir helfen?
Chris
-
Habe mir den Zeiger auf das Notepad-Hauptfenster geholt
Logischerweise brauchst Du den Zeiger des im Notepad-Hauptfenster liegenden Edit-Controls!
-
Dacht ich mir schon, aber wie bekomme ich diesen Zeiger? Habe mir das mal mit Spy++ angeschaut, aber das Fenster hat keinen Namen.
Bekomme ich den Zeiger ausgehend vom Notepad-Fenster?
-
jo. EnumChildWindows, als Parameter 1
-
Hab jetzt mal folgendes versucht:
BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam) { if (hwndChild) { SendMessage(hwndChild, WM_PASTE, 0, 0); return TRUE; } else { return FALSE; } } void CDMView::OnBnClickedEditor() { HWND pwnd; ShellExecute(0, "open", _T("Notepad.exe"), 0, 0, SW_SHOWMAXIMIZED); pwnd = ::FindWindow(NULL, "Unbenannt - Editor"); if (pwnd) EnumChildWindows(pwnd, EnumChildProc, 1); }Das klappt, wenn ich Debugge (mit F10 durchsteppe) oder bereits ein Notepad-Fenster geöffnet habe. Ansonsten klappt es aber nicht.

Weiß jemand was ich falsch mache?Gruß
Chris
-
Probier das mal:
ShellExecute(0, "open", _T("Notepad.exe"), 0, 0, SW_SHOWMAXIMIZED); HWND pwnd; for(int i=0;i<50;++i) { Sleep(10); //wenns net klappt vielleicht auch Sleep(100) probieren ... pwnd = ::FindWindow(NULL, "Unbenannt - Editor"); if (pwnd) { EnumChildWindows(pwnd, EnumChildProc, 1); break; } }
-
Klappt!
DANKE!