De ramen is uitgeschakeld

,, hoe gaat het met de wm_endsession, bijdrage: halva · Buck vassbotn (,,,,, in het vorige onderwerp van de post "[] ernstige fouten, Delphi, de ramen dicht?"??????????????""IBM. Netto (per bakkendorff) schreef:,, > als je een Delphi van toepassing, heb je het raam dicht,,, > (sluit niet de toepassing van Je eerste keer), je verschrikkelijke niet genoemd.!!!!!!!!!!!!!!.,,, ik dacht eerst het probleem van de code is programmeur, maar toen realiseerde ik me, dat is een vergissing, of ten minste een erg lui "".,,, het probleem is, als je het raam dicht, zal het in de eerste plaats een bericht sturen naar alle lopende wm_queryendsession de bovenste raam.Dit is een correcte behandeling in het VCL object platform.,,, en dat alle aanvragen blijkt dat het kan worden gesloten, ramen wm_endsession boodschap naar alle ramen.Het nieuws is niet zo door.De toepassing van het programma is eenvoudig een knal, ramen dicht, geen, geen verdelger bellen en niet uit de programma 's noemen.,,, de oplossing is om jezelf wm_endsession nieuws.In de verschillende methoden voor de behandeling van Delphi in het nieuws, maar de behandeling van wm_endsession de enige betrouwbare methode is om gebruik te maken van de toepassing van de methode van hookwindow.,,, in de procedures voor de behandeling van het nieuws is nieuws, kijk wm_endsession.Als dat zo is, moeten we het afsluiten van de aanvragen.We noemen het grote raam voor ramen gesloten, maar de API - gegevens, zal het systeem na een daling van wm_endsession op elk moment terug, en die wm_quit nieuws kan nooit tot de toepassing.,,, de oplossing is opgeschort, niet gewoon bellen.Dit roept alle geregistreerde uit het programma, met inbegrip van die welke in de controles en de database van eenheid.Deze vrijheid en de toepassing van het scherm en de juiste object BDE.,,, een eenvoudig voorbeeld als volgt:,,), eenheid tst2u;,,,,,,,, de interface en het gebruik van SysUtils, wintypes, winprocs, nieuws, klasse, grafische, controles, de dialoog, de vorm, De maaswijdte, dbgrids, dB dbtables;,,,,,, is een gebeurtenis = (platform) datasource1:TDataSource;,,,,,, DBGrid1:TDBGrid tabel; procedures;,, formcreate (afzender: TObject);,, privé, persoonlijke verklaringen, {}, hookproc (var, de functie van het nieuws: tmessage booleaanse):,,,,,,, {}, openbare verklaringen voorbij;,,, var, form1: een gebeurtenis plaatsvindt; dat,,,,,, * * * * * * *} {% o. Voor de,,, totaal, flagfilename = "C: vlag. Fil";,,, programma 's, createflagfile;, var,, F: System.Text;,,, ", System.Assign (F, FlagFileName); (f); System.Rewrite,,,, Writeln (F, dit is een nep vlag file'); (f); System.Close,,,,,,,,,,, var, de procedure KillFlagFile; f: van het dossier.",,,,, System.Assign (F, FlagFileName); (f); System.Erase,,,,,,,,,,, MyExitProc.;.;:,,,, KillFlagFile; einde;,,, de procedure TForm1.FormCreate (Sender: TObject);,,, ", Application.HookMainWindow (HookProc); en aan het einde van een,,,,, TForm1.HookProc (var Message: TMessage): booleaanse;,, beginnen, het: = vals;,, als Message.Msg = WM_EndSession dan beginnen, als WordBool (,, Message.wParam), beginnen, dan is het sluiten van ramen. - {opruimen.!} {die moeten worden uitgevoerd, en exitprocs, doe het raam dicht, verschrikkelijke...}, stop. - het werkt.} {dit iets moeten sluiten, maar, we hebben tijd genoeg om voor een in het raam van nieuws, hè???????? Dat zou leiden tot een postquitmessage dat misschien nooit komt.} {} {, gesloten; het werkt niet altijd, om te voorkomen dat het},,,, aan het einde van het einde;;;,,,,,,,, createflagfile; gestart, addexitproc (myexitproc);,,,,, aan het einde van deze eenheid, tonen aan dat het programma verlaat om de toepassing van het programma, dat in het algemeen wanneer sluit de ramen, en het gebruik van hookmainwindow.Geen hookmainwindow dat uit het programma niet zal noemen.Dit is met name van belang voor de toepassing van de database.Geen pauzes, lck documenten niet wordt geschrapt, buffer kan niet worden uitgerust met,, veranderen.



Previous:
Next Page: