Guhopa Geschrieben 15. Juli 2003 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 15. Juli 2003 Teilen Geschrieben 15. Juli 2003 Hi, irgendwie hab ich dich nicht so ganz verstanden, willst du dein Programm immer im Vordergrund halten? Gruß Guybrush Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guhopa Geschrieben 15. Juli 2003 Autor Teilen Geschrieben 15. Juli 2003 ja genau es soll sozusagen als hauptprog immer laufen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 15. Juli 2003 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guhopa Geschrieben 15. Juli 2003 Autor Teilen Geschrieben 15. Juli 2003 es geht aber eigentlich darum die über das menü gestarteten progs in den vordergrund zu holen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Diablo999 Geschrieben 15. Juli 2003 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guhopa Geschrieben 15. Juli 2003 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guhopa Geschrieben 15. Juli 2003 Autor Teilen Geschrieben 15. Juli 2003 vielleicht könnt ihr mir ja auch sagen wie ich an das window handle komme . Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Shlo Geschrieben 15. Juli 2003 Teilen Geschrieben 15. Juli 2003 FindWindow() Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 15. Juli 2003 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guhopa Geschrieben 16. Juli 2003 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 16. Juli 2003 Teilen Geschrieben 16. Juli 2003 Hab doch gesagt, dass das nicht ganz so einfach ist Hier ist ne ansich ganz gute Loesung. Goos Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guhopa Geschrieben 16. Juli 2003 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.