Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

--------------------------------------------------------------------------------

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

ja genau es soll sozusagen als hauptprog immer laufen

es geht aber eigentlich darum die über das menü gestarteten progs in den vordergrund zu holen

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

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

vielleicht könnt ihr mir ja auch sagen wie ich an das window handle komme .

FindWindow()

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

: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:

:D

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. :rolleyes:

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.