[Delphi] Applicatie word zomaar geactiveerd

Pagina: 1
Acties:

  • Quitter3
  • Registratie: Januari 2001
  • Laatst online: 13-02 16:30
Heb hier op mijn werk een heel raar probleem.

We hebben hier een grote Delphi applicatie, die bij 1 klant zomaar tevoorschijn komt.
Dat wil zeggen: De applicatie draait. De klant is bezig in Word of Outlook en opeens komt onze App naar voren. De klant typed dus opeens in onze App i.p.v
Word of Outlook. Rare is dat het willekeurig lijkt te gebeuren. Onze App word ook niet actief (word op taakbalk niet blauw, frame van app blijft ook grijs).

Ik kan het zelf op 1 manier simuleren. Als ik in IE de history clear dan verschijnt de App opeens. Ongeacht welke applicatie hiervoor actief waren.

Is er iemand die hier een verklaring voor heeft of het ook weleens heeft gehad of gezien? We komen er hier niet echt uit.

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Het lijkt mij dat er ergens een snelkoppeling gedefinieerd is die door jouw applicatie opgepikt wordt?

Verder zou het ook aan een timer o.i.d. kunnen liggen, als je daar bepaalde code onder hangt. Wat zijn de specs van jouw PC en die van de gebruiker? Misschien is het namelijk Windows-versie afhankelijk?

My personal website


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Klink als idd aan een snelkoppeling of hot key.

We adore chaos because we like to restore order - M.C. Escher


  • martijn_brinkers
  • Registratie: November 2001
  • Laatst online: 31-10-2025
"Its a longshot" maar het kan ook een broadcast message zijn die je app oppikt.

Als je IE cache clear doet broadcast windows volgens mij een WM_SETTINGCHANGE message. Zou kunnen dat je app hier dus op reageerd en dus active wordt.

[ Voor 53% gewijzigd door martijn_brinkers op 25-03-2003 20:04 ]


  • Quitter3
  • Registratie: Januari 2001
  • Laatst online: 13-02 16:30
Kent iemand ook een Tool om messages op te vangen, zodat ik kan kijken wat er zoal verstuurd wordt als ik het probleem naspeel?

Ik heb Spy++, dat bij Visual Studio zit. Kan ik dit ook alleen installeren vanaf de Visual Studio CD?

Zijn er nog andere progjes die dit kunnen?

  • martijn_brinkers
  • Registratie: November 2001
  • Laatst online: 31-10-2025
Spy++ werkt goed. Je kan ook gebruik maken van Winsight32 die standaard met delphi wordt meegeleverd (is vergelijkbaar met Spy++)

  • Quitter3
  • Registratie: Januari 2001
  • Laatst online: 13-02 16:30
Het gebeurt inderdaad als er een Broadcast wordt gedaan met WM_SETTINGCHANGE (WM_WININICHANGE).

Ik heb het getest door zelf de broadcast te doen in een testappje. Volgende regel stuurt de broadcast.

SendMessageTimeOut(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0, SMTO_NORMAL, 1000, I);

Dit geeft hetzelfde effect. Verder onderzoek heeft geleerd, dat het probleem zich voordoet bij een TCombobox control. (Deze is geplaatst op een TCoolbar).
Verder blijkt tot mijn verbazing, dat Delphi er zelf ook last van heeft. Weliswaar springt Delphi niet opeens naar voren, maar de Combobox boven in Delphi (waar bij mij meestal <none> in staat) heeft wel de focus. Ook de Layout editor van Delphi krijgt de Focus op de Combobox, die problemen oplevert.

Probleem lijkt dus ergens in de TCombobox code te zitten. Ik ga nu proberen uit te vinden waar precies.

Wij draaien hier met Windows 2000 (5.00.2195) ServicePack 2.
Delphi 5 (5.62)

Zijn er mensen die de broadcast eens willen proberen? Om te zien of het ook Windows of misschien Delphi afhankelijk is?
Tips om de oorzaak te onderzoeken zijn ook welkom. Ik ben redelijk technisch onderlegt, maar nog lang geen expert en merk toch dat het best lastig is om in de
code van de componenten te wroeten.
Dit lijkt me wel een leuke uitdaging voor de programmerende tweaker _/-\o_.

Als ik meer weet, laat ik het hier wel weten.

Verwijderd

Heb je al gekeken in quality assurance bij Borland (qa.borland.com ofzo) als dit probleem nog niet in vermeld staat; meld het dan! :)

  • martijn_brinkers
  • Registratie: November 2001
  • Laatst online: 31-10-2025
WM_WININICHANGE wordt door windows oa gebruikt om door te geven dat locale settings zijn veranderd (bijv. currency symbol, date format etc.). Delphi onderschept deze message en stelt zo de nieuwe locale settings in (zie GetFormatSettings in SysUtils.pas)
GetFormatSettings resets all date and number format variables to their initial values.

On Windows, GetFormatSettings is called automatically in response to WM_WININICHANGE messages.
Die combobox die je gebruikt is dat een standaard combobox of een speciale?

  • Quitter3
  • Registratie: Januari 2001
  • Laatst online: 13-02 16:30
Het is een standaard combobox.

Ik zal GetFormatSettings eens opzoeken.
En ik zal eens op qa.borland.com kijken.
Pagina: 1