Problemet er at navnet på vinduet er ik konstant. Så jeg har brug for en metode som kan få fat i window handle til en anden process ud fra f.eks exe name?
Jeg skal finde ud af om den applikation jeg starter er startet allerede .. hvis ja så skal jeg sætte den i focus og lade være med at starte den ny applikation. som sagt vinduets navn er ik det samme altid
Kig på vinduet vi snakker i.. caption på den hedder : Eksperten < Programmering : C/C++ : Process window handle > 'Process window handle' <-- er unik for lige denne vindu som jeg ikke kan ane noget om når jeg starter en ny exsplorer... Forstår du hva jeg mener?
TMXCP_MAIN_FORM hvor har du det fra?? min app hedder testerrad.. hva er class name for den?? noget jeg selv skal definere?? eller er det CTesterradApp...
Ja men jeg har den kode .. men Jeg er ik helt sikker på hvad der skal stå istedet for MyClassName.. fordi jeg har prøvet med de ovennævnte og den kan ikke finde dem..
Jeg har prøvet GetClassName... men Jeg checker om app er der for tidlig tror jeg.. jeg har prøvet med følgende variabler for at angive HWND handle : theApp.m_pMainWnd->m_hWnd og theApp.m_pActiveWnd->m_hWnd. Men den gider ikke at godtage den.. compiler brokker sig..
Ja, men classnamet skulle gerne vær konstant, så det er faktisk kun at få fat i det een gang. MFC laver noget sindrigt noget når der tildeles classnames, så det er ikke så indlysende....
Alle vinduer har en "klasse" som de er en instans af. Den skal registreres ved Windows, hvorefter man kan instantiere dem. Alt det gør MFC for dig. Problemet er, at få fat i det classname som er blevet tildelt. Det kan man så bruge "GetClassName" til...
Prøv, for at få classnamet at sætte en "GetClassName" ind i din dialogs "OnInitDialog". Efter du har dit classname, kan du slette koden igen, og vupti :)
wisen >> det er ikke sikkert at jeg har en dialog .. det app jeg arbejder med lige nu er 'view med documenter'... det skal være en universal måde at gøre det på...
hInstance [in] Handle to the instance of the application that created the class. To retrieve information about classes defined by the system (such as buttons or list boxes), set this parameter to NULL. lpClassName [in] Pointer to a null-terminated string containing the class name. The name must be that of a preregistered class or a class registered by a previous call to the RegisterClass or RegisterClassEx function.
I GetClassInfo nr to parametr skal være ClassName som jeg ik kender ..
Jeg tror jeg lukker nu.. det er nok umuligt at få fat i ClassName hvis man ik har registreret den først .. se her: lpClassName [in] Pointer to a null-terminated string that specifies the class name or a class atom created by a previous call to the RegisterClass or RegisterClassEx function. The atom must be in the low-order word of lpClassName; the high-order word must be zero. If lpClassName points to a string, it specifies the window class name. The class name can be any name registered with RegisterClass or RegisterClassEx, or any of the predefined control-class names.
Det er i FindWindow funktionen .. så jeg må leve med at man ik kan finde den f***** class name. Jeg ved jo ik om folk registrerer deres classname..
Jeg har en applikation kørende ... lad os kalde den Tester + bruger. bruger kan være forskelllige.
F.eks. Kig på vinduet vi snakker i.. caption på den hedder : Eksperten < Programmering : C/C++ : Process window handle > 'Process window handle' <-- er unik for lige denne vindu som jeg ikke kan ane noget om når jeg starter en ny exsplorer...
Dvs. Jeg kan have at min app hedder noget som jeg ikke kan få fat i fordi jag vil checke om den app kører i forvejen tidlig i forløbet , altså i Intit funktionen. Jeg har prøvet mig frem med at bruge theApp.m_pszAppName variablen .. men det er en begrensning fordi vinduets titel kan ændres runtime den er jo ikke fast. Derfor ville jeg have et konstant variabel som er unik lige for denapp ..
Den måde jeg gør dette på er.. 1) når jeg starter en app sætter jeg en semafor op.. næste gang checker jeg om semaforen er der, hvis ja så sopper jeg appen. Det funker fint MEN det ekstra feature jeg vil ha er at istedet for bare luk 'den nye app' vil jeg maksimere/focusere den allerede kørende app. Hvis jeg bare kunne sige noget i still med: Hvem har sat semaforen ? ---> Maksimer ham.
Ok. hvad med at sende en broadcast message til ALLE vinduer, med din egen WM_xxx message. Denne WM_xxx message lytter du så efter i den app som du vil makimere.
The class string is used as a means of finding the main window of the application. It is created by taking the name of the application (pulled from the resource string) and appending " Class" to the end. Simple but effective. It gets attached to the main window during the main frame’s PreCreateWindow() function. When we want to find the window, we use FindWindowEx() with the class string.
wisen jeg tror den kan bruges.. men det er for latterligt at man ik kan gøre det nemmere... Tja.. Jeg vil takke jer begge for de gode svar/forslag.. wisen smid lige en svar så jeg kan delle point til jer begge. Tak igen :o)
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.