Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ShellNotifier löst beim Start schon OnChange aus (https://www.delphipraxis.net/63903-shellnotifier-loest-beim-start-schon-onchange-aus.html)

torud 24. Feb 2006 09:57


ShellNotifier löst beim Start schon OnChange aus
 
Hallo Wissende,

ShellNotifier löst beim Start schon OnChange-Ereignis aus. Das ist insofern Problematisch, weil dadurch in meinen Routinen versucht wird eine Stringliste 2 x innerhalb kürzester Zeit in ein und dieselbe Datei zu speichern. Das schafft das Tool aber nicht, weil entweder die Datei noch in Nutzung ist oder aber weil sich sich selbst dabei einholt!? Setze ich nun im OnChange-Event eine Showmessage dazwischen schafft es das Programm die Datei zu speichern und es gibt keine Problem. Ich habe nun schon versucht mit einer globalen boolschen Variable, welche ich beim Start auf True setze und nach dem erstmaligen Speichern der Datei auf False setze, den ShellNotifier zu deaktivieren. Leider ohne Erfolg.

Wie kann ich also dieses Problem umgehen?

Selbst mit Try Finally End hat es nicht geklappt. Sleep(5000) hat auch nicht geholfen...

Peter Wolf 24. Feb 2006 11:37

Re: ShellNotifier löst beim Start schon OnChange aus
 
Hallo,

ich hatte mal ein ähnliches Problem mit ShellNotifier, wo ein ShowMessage oder beim Debuggen alles so funktionierte, wie es sollte, aber ohne nicht.
Mit Sleep bist Du schon fast auf dem richtigen Weg, musst nur noch ein Application.ProcessMessages mit einbauen (vieleicht auch abwechselnd sleep app... sleep app.., genau weiss ich es nicht mehr). Dann hat's bei mir funktioniert.

Grüße Peter

Dust Signs 24. Feb 2006 11:58

Re: ShellNotifier löst beim Start schon OnChange aus
 
Du kannst auch eine TCriticalSection verwenden - einfach mal in der OH nachlesen.

Dust Signs

torud 14. Mär 2006 11:51

Re: ShellNotifier löst beim Start schon OnChange aus
 
Ich habe mal folgendes probiert, wurde aber nicht mit Erfolg belohnt:

Delphi-Quellcode:
procedure TForm1.ShellChangeNotifier1Change;
begin
    LockXY.Acquire;
    //ShowMessage('change'); //mit dieser messagebox funktioniert es
      try
         CreateIndexPage;
      finally
        //refresh des browsers
        if (StatusBar1.Panels[0].Text = '') or (StatusBar1.Panels[0].Text = 'blank')then
          web_cis.Navigate(Htm_Path+'index.html')
        else
          web_cis.ExecWB(OLECMDID_REFRESH, OLECMDEXECOPT_DODEFAULT);
        //entsperren
        LockXY.Release;
      end;
end;
LockXY habe ich global deklariert und im FormCreate erzeugt. Wo ist nun der Fehler? Benutze ich es falsch, oder wo ist das Problem??? Komisch ist auch, dass das Problem nur auftaucht, wenn ich die CP-Files über lokales Netzwerk speichere und das Programm dann lokal sich updaten soll. Wenn ich alles komplett auf einem Rechner mache, ist eher unproblematisch...

Christian Seehase 14. Mär 2006 11:59

Re: ShellNotifier löst beim Start schon OnChange aus
 
Moin Tom,

hast Du schon einmal probiert das ganze ohne Komponente zu lösen?
MSDN-Library durchsuchenSHChangeNotifyRegister

torud 14. Mär 2006 12:04

Re: ShellNotifier löst beim Start schon OnChange aus
 
Ehrlich gesagt nicht, weil ich mich mit Api´s überhaupt nicht auskenne. Ist ne billige ausrede, aber ich konnte selbst aus dem von Dir verlinkten Suchergebnis mit den 10 Folgelinks nichts ausmachen, was mich per sofort in Delphi glücklich macht. Scheint damit zusammenzuhängen, weil ich kein "richtiger" Programmierer bin.

Naja und selbst hier im Forum blieb die Suche nach SHChangeNotifyRegister ergebnislos - Leider.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz