ausführung nur durch bestimmte exe
-
hoi,
hab ein neuerliches problem:
ich habe eine applikation und mir dazu selbst nen updater als updater.exe gebaut. sobald der updater nun alle updates ausgeführt hat startet er meine applikation mitShellExecute(0,"open","Messenger.exe",0, 0,SW_SHOWNORMAL);
nun will ich verhindern das sich Messenger.exe einfach so starten lässt. das prog soll nur über den updater startbar sein. geht sowas?
ach und nochwas: wie kann ich die dateigröße einer datei ermitteln?thx bw
-
Dateigröße ermitteln geht folgendermaßen:
Datei im Readfähigen Modus öffnen, dann zur letzten Stelle der Datei springen und abfragen auf welcher Position man ist.
als Code:TFileStream* meinedatei = new TFileStream(".\\diedatei.txt",fmOpenRead | fmShareDenyNone); //Datei 'diedatei.txt' zum Lesen öffnen //(DenyNone heißt alle anderen Anwendungen dürfen sie zum lesen und schreiben öffnen) meinedatei->Seek(0,soFromEnd); //bewege den lesezeiger auf position 0 relativ zum Dateiende (also exakt zum Dateiende) int filesize = meinedatei->Positon; //speichere aktuelle Zeigerposition in 'filesize' delete meinedatei; //Speicher wieder freigebenjetzt befindet sich in filesize die Dateigröße in Bytes, durch 1024 geteilt sinds dann kB, nochmal durch 1024 MB usw.
Hoffe ich konnte dir damit helfen.
Mehr zu Dateioperationen efährst du in der BCB-Hilfe unter dem Thema TFileStream.Gruß
Auron
-
hmmm im thread geirrt???
also als antwort, du musst dein programm nur mit einem parameter starten lassen, z.b. wenn du dein programm nur mit dam parameter updated starten lässt..
dann musst du
ShellExecute(0,"open","Messenger.exe","ich glaube hier kommen die parameter hin", 0,SW_SHOWNORMAL);
aufrufen und in der messenger.exe einfach einen if(ParamStr(1) != "wasweisich") Application->Terminate(); machen