19. august 2005 - 11:28Der er
10 kommentarer og 1 løsning
Messagebox skal vises bag anden dialog (win32)
Jeg har en applikation som åbner add/remove programs for brugeren og derefter viser en dialog (messagebox). Det er meningen er brugeren skal besvare et spørgsmål efter at add/remove programs vinduet er lukket, så derfor vil jeg gerne vise messageboxen bag add/remove programs viduet... Hvordan gør jeg det?
(jeg har ikke fundet det muligt/praktisk at vente på at brugeren lukker add/remove programs)
Nu ved jeg ikke, hvordan din kode til at åbne add/remove programs ser ud, men hvis du bruger ShellExecute eller ShellExecuteEx så kan du faktisk vente på brugeren lukker add/remove. (Du skal bruge ShellExecuteEx hertil, men det er ret nemt at ændre fra ShellExecute) Den giver dig et handle til processen, og så kan du starte en thread op der laver en WaitForSingleObject(hProcess); Næste linie smider du bare din messagebox i, så bliver den kørt så snart add/remove lukkes, og dit program sleeper indtil, så du ikke får 100 % cpu usage.
Der er dog et men: Jeg ved ikke om add/remove programs starter en ny process op, hvis det ikke gør, duer denne metode ikke. Men hvis den gør er det klart det mest optimale.
Alternativt kan du jo have en tråd til at tjekke hver 100ms eller 200ms, eller hvad du nu synes, om add/remove programs vinduet findes (findwindow fra API'en), denne metode er dog lidt "hovsa-løsning" agtig :P
Jeg vil tro du med SetWindowPos kan placere din messagebox bag add/remove vinduet, dog kan jeg ikke lige komme i tanke om hvordan det skal gøres. Men held og lykke med det.
jeg mener at løsningen med at vente fejler (har prøvet temmelig mange gange).
Jeg regnede med at der var et eller andet funktionskald som kunne gøre det, men skal lige finde ud af hvordan jeg identificerer dialogen så jeg kan "flytte" den...
For at dit program kan køre videre (hvis du har brug for det), eller i det mindste lukkes, bør du oprette en tråd til at køre den kode jeg har skrevet. Ellers vil programmet få en "svarer ikke" fra windows, da den jo "sover" indtil tilføj/fjern programmer lukkes. Men du må gerne lige skrive om du får det til at virke :)
Jeg kan ikke helt følge dig i at det skulle blive inkonsistent, men du kan jo lige skrive her på mandag, hvordan det er gået. Det med tråden skulle nu ikke volde de store problemer synes jeg, men igen det afhænger selvfølgelig meget af dit program.
programmet er lidt tricky fordi det er noget som skal kunne installere nogle applikationer/afinstallere andre.... og der er ret store restriktioner på hvad/hvornår brugeren må interagere med
Projektet er midlertidigt på hold, men kigger på det så snart jeg kan
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.