Guhopa Geschrieben 15. Juli 2003 Geschrieben 15. Juli 2003 -------------------------------------------------------------------------------- hi zusammen, ich will ein prog schreiben mit einem menü in dem dynamisch aus einer db exefiles eingetragen werden und durch den nutzer auszuwählen sind. nun soll wenn der nutzer eine exe gestartet hat und den eintrag wieder auswählt der process weitergeführt werden. also der process wieder in den vordergrund geholt werden wie bei alt+tab nun mein problem: ich kann mir die threadID merken aber dann scheiterts wie kann ich weiter vorgehen ? hier ein bißchen code Zitieren
Guybrush Threepwood Geschrieben 15. Juli 2003 Geschrieben 15. Juli 2003 Hi, irgendwie hab ich dich nicht so ganz verstanden, willst du dein Programm immer im Vordergrund halten? Gruß Guybrush Zitieren
Guhopa Geschrieben 15. Juli 2003 Autor Geschrieben 15. Juli 2003 ja genau es soll sozusagen als hauptprog immer laufen Zitieren
Guybrush Threepwood Geschrieben 15. Juli 2003 Geschrieben 15. Juli 2003 Dann reicht es doch normalerweise aus wenn du beim erstellen des Fensters das Flag WS_EX_TOPMOST setzt. Das kannst du aber auch im Nachhinein per SetWindowPos() machen. Zitieren
Guhopa Geschrieben 15. Juli 2003 Autor Geschrieben 15. Juli 2003 es geht aber eigentlich darum die über das menü gestarteten progs in den vordergrund zu holen Zitieren
Diablo999 Geschrieben 15. Juli 2003 Geschrieben 15. Juli 2003 Hab ich das richtig verstanden? Du willst ein Programm haben welches in einem Menü mehere andree Programme verwaltet. Diese sind über ein Menü zu starten, und wenn sie schon mal gestartet wurden sollen sie nicht erneut gestartet werden sondern in den vordergrund geholt werden... Sollte das so richtig sein könnte eine mögliche Lösung sein: - Du merkst dir die ThreadID - Mit EnumThreadWindows und der ThreadID bekommst du alle Fenster des Threads - Eines dieser Fenster ist mir sicherheit das Haupfenster, kann dir aber leider nicht sagen wie du das rausbekommst... - Jedenfalls musst du dieses Fenster dann eben in den Vordergrund holen wir Guybrush schon gesagt hat. Hoffe das hilft?!? Diablo999 Zitieren
Guhopa Geschrieben 15. Juli 2003 Autor Geschrieben 15. Juli 2003 also ich hab jetzt die process id und versuche mit OpenProcess die gewählte Anwendung wieder anzuzeigen hProc = OpenProcess(PROCESS_ALL_ACCESS,false, ((*runProcIter)->processId)) aber ich komm nich an die anwendung ran Zitieren
Guhopa Geschrieben 15. Juli 2003 Autor Geschrieben 15. Juli 2003 vielleicht könnt ihr mir ja auch sagen wie ich an das window handle komme . Zitieren
Goos Geschrieben 15. Juli 2003 Geschrieben 15. Juli 2003 FindWindow() halt ich fuer nicht unbedingt geeignet, weil man ja nicht unbedingt den Window Titel der gestarteten Anwendung weiss. Ueber EnumThreadWindows() solltest aber an ein Window Handle kommen. So weit ich mich erinnern kann ists dann aber trotzdem nicht immer ganz trivial das gewuenschte Fenster in den Vordergrund zu bekommen. Ich glaub da verhielten sich verschiedene Windows Versionen auch etwas unterschiedlich. Goos Zitieren
Guhopa Geschrieben 16. Juli 2003 Autor Geschrieben 16. Juli 2003 :confused: :confused: :confused: ich hab das jetzt mit EnumWindows und EnumWindowsProc gelöst, leider scheint der weder der Aufruf ShowWindow(hwnd, SW_SHOWNORMAL) oder SendMessage(hwnd, WM_SHOWWINDOW ) etwas zu bewirken. :confused: :confused: :confused: Zitieren
Goos Geschrieben 16. Juli 2003 Geschrieben 16. Juli 2003 Hab doch gesagt, dass das nicht ganz so einfach ist Hier ist ne ansich ganz gute Loesung. Goos Zitieren
Guhopa Geschrieben 16. Juli 2003 Autor Geschrieben 16. Juli 2003 danke an alle habs jetzt hinbekommen, mit BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) { int pID = (int) lParam; bool res = true; DWORD dwProcessId = 0; DWORD dwThreadId = GetWindowThreadProcessId (hwnd, &dwProcessId); if (pID == dwProcessId) { res = BringWindowToTop(hwnd); ShowWindow(hwnd, SW_SHOWNORMAL); return res; } return res; } ein kleiner wermutstropfen bleibt , es werden nämlich auch alle childwindows des aufgerufenen windows angezeigt. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.