Kada želiš da kopiraš na LPT port koristiš "lpt:" u kodu. Jesi li probao da kopiraš na "USB001:" ili kako se već zove port na koji pokušavaš da štampaš?
Drugo, pošto već imaš fajl snimljen (a.tmp) startuj (WinExec ili bolje CreateProcess) "notepad.exe /p a.tmp".
Predlažem ti da ostaviš i jednu i drugu opciju u programu, pa korisnik neka podesi.
Pošto će verovatno uslediti pitanje za CreateProcess, iskoristi ovo:
Code:
function RunAndWait(FileName:String; Visibility : integer): integer;
var
zAppName:array[0..512] of char;
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
StrPCopy(zAppName,FileName);
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb := Sizeof(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := Visibility;
if not CreateProcess(nil, zAppName, nil, nil, false, CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then
Result := -1
else begin
WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess,cardinal(Result));
CloseHandle( ProcessInfo.hProcess );
CloseHandle( ProcessInfo.hThread );
end;
end;
Ili pošto već imaš:
Komanda := 'cmd /c copy "a.tmp" lpt1:/b'
prepravi u/dodaj :
Komanda := 'cmd /c notepad.exe /p "a.tmp"'