Sladjana Topalovic - 02:38pm Mar 31, 2003 MEZ (# 1 von 1)
Hallo,
ich habe ein Problem. Ich möchte, wenn das Programm "B" ausgeführt werden soll, darf man es nicht sehen können (in der Leiste oder TaskManager stört es nicht). Aber sonst darf es nicht angezeigt werden. Mit minimize habe ich es auch versucht, das Fenster sieht mann immer ganz kurz.......... vielleicht kann mir jemand helfen
ich habe ein "Hauptprogramm" - "A". Mit einem Click soll anderes Programm (das z.B. Daten aus einer Tabelle in die andere verschiebt) - "B".
DAS STEHT IM PROGRAMM "A".
pgm := 'c:\.....\B.exe '; pgm := pgm + 'noch 2 Parameter';
StrPCopy(pCommandLine,pgm);
Result := false; FillChar(StartupInfo,SizeOf(StartupInfo),#0); StartupInfo.cb := sizeof(StartupInfo); StartupInfo.dwflags := STARTF_USESHOWWINDOW or STARTF__USESTDHANDLES; showWindow(owner, SW_HIDE);
result := createProcess(nil,pcommandLine,nil,nil,true,high_p riority_class,nil,nil,Startupinfo,ProcessInfo);
if Result then begin WaitForSingleObject(ProcessInfo.hProcess, INFINITE); hAppProcess := ProcessInfo.hProcess; hAppThread := ProcessInfo.hThread;
end else begin raise Exception.Create('FEHLER !!!!!!!!!!!!'); end;
if hAppThread <> 0 then CloseHandle(happthread); if hAppProcess <> 0 then CloseHandle(hAppProcess);
application.ProcessMessages;
DAS STEHT IM PROGRAMM "B":
procedure TForm1.FormActivate(Sender: TObject); begin ShowWindow(Form1.Handle,SW_HIDE); button1.Click; end;
und unter BUTTON1.click steht folgendes: statusbar1.Panels.Items[0].Text := 'CRM - Utility'; if paramcount <> 2 then showmessage('Ungültige Anzahl Parameter') else begin // Prüfen ob Dateien frei sind repeat bereit_zum_verarbeiten := true; if IsFileInUse(_xml.Text) then bereit_zum_verarbeiten := false; IF not bereit_zum_verarbeiten then begin statusbar1.Panels.Items[0].Text := 'Locked ..'; application.ProcessMessages; form1.Show; sleep(100); end; until bereit_zum_verarbeiten;
statusbar1.Panels.Items[1].Text := 'Lade Definitionsdatei ...'; application.ProcessMessages; _defn.Text := paramstr(1); _xml.Text := paramstr(2); if not fileexists(_defn.text) then showmessage('Definitionsdatei nicht gefunden') else begin statusbar1.Panels.Items[1].Text := 'Schreibe XML-Datei ...'; application.ProcessMessages; assignfile(XMLFile,_xml.Text); rewrite(XMLFile); XMLString := '<?xml version="1.0" standalone="yes"?> <DATAPACKET Version="2.0">'; Writeln(XmlFile,XmlString); memo1.Lines.LoadFromFile(_defn.Text); for ii := 0 to memo1.Lines.Count-1 do begin Writeln(XmlFile,memo1.lines.strings[ii]); end; XMLString := '<ROWDATA />'; Writeln(XmlFile,XmlString); XMLString := '</DATAPACKET>'; Writeln(XmlFile,XmlString); closefile(XMLFile); statusbar1.Panels.Items[1].Text := 'Datei erfolgreich erstellt ...'; application.ProcessMessages;
end; end;
close;
Vielen Dank.
Hallo,
ich habe ein Problem. Ich möchte, wenn das Programm "B" ausgeführt werden soll, darf man es nicht sehen können (in der Leiste oder TaskManager stört es nicht). Aber sonst darf es nicht angezeigt werden. Mit minimize habe ich es auch versucht, das Fenster sieht mann immer ganz kurz.......... vielleicht kann mir jemand helfen
ich habe ein "Hauptprogramm" - "A". Mit einem Click soll anderes Programm (das z.B. Daten aus einer Tabelle in die andere verschiebt) - "B".
DAS STEHT IM PROGRAMM "A".
pgm := 'c:\.....\B.exe '; pgm := pgm + 'noch 2 Parameter';
StrPCopy(pCommandLine,pgm);
Result := false; FillChar(StartupInfo,SizeOf(StartupInfo),#0); StartupInfo.cb := sizeof(StartupInfo); StartupInfo.dwflags := STARTF_USESHOWWINDOW or STARTF__USESTDHANDLES; showWindow(owner, SW_HIDE);
result := createProcess(nil,pcommandLine,nil,nil,true,high_p riority_class,nil,nil,Startupinfo,ProcessInfo);
if Result then begin WaitForSingleObject(ProcessInfo.hProcess, INFINITE); hAppProcess := ProcessInfo.hProcess; hAppThread := ProcessInfo.hThread;
end else begin raise Exception.Create('FEHLER !!!!!!!!!!!!'); end;
if hAppThread <> 0 then CloseHandle(happthread); if hAppProcess <> 0 then CloseHandle(hAppProcess);
application.ProcessMessages;
DAS STEHT IM PROGRAMM "B":
procedure TForm1.FormActivate(Sender: TObject); begin ShowWindow(Form1.Handle,SW_HIDE); button1.Click; end;
und unter BUTTON1.click steht folgendes: statusbar1.Panels.Items[0].Text := 'CRM - Utility'; if paramcount <> 2 then showmessage('Ungültige Anzahl Parameter') else begin // Prüfen ob Dateien frei sind repeat bereit_zum_verarbeiten := true; if IsFileInUse(_xml.Text) then bereit_zum_verarbeiten := false; IF not bereit_zum_verarbeiten then begin statusbar1.Panels.Items[0].Text := 'Locked ..'; application.ProcessMessages; form1.Show; sleep(100); end; until bereit_zum_verarbeiten;
statusbar1.Panels.Items[1].Text := 'Lade Definitionsdatei ...'; application.ProcessMessages; _defn.Text := paramstr(1); _xml.Text := paramstr(2); if not fileexists(_defn.text) then showmessage('Definitionsdatei nicht gefunden') else begin statusbar1.Panels.Items[1].Text := 'Schreibe XML-Datei ...'; application.ProcessMessages; assignfile(XMLFile,_xml.Text); rewrite(XMLFile); XMLString := '<?xml version="1.0" standalone="yes"?> <DATAPACKET Version="2.0">'; Writeln(XmlFile,XmlString); memo1.Lines.LoadFromFile(_defn.Text); for ii := 0 to memo1.Lines.Count-1 do begin Writeln(XmlFile,memo1.lines.strings[ii]); end; XMLString := '<ROWDATA />'; Writeln(XmlFile,XmlString); XMLString := '</DATAPACKET>'; Writeln(XmlFile,XmlString); closefile(XMLFile); statusbar1.Panels.Items[1].Text := 'Datei erfolgreich erstellt ...'; application.ProcessMessages;
end; end;
close;
Vielen Dank.
Comment