Avatar billede fun22 Nybegynder
04. januar 2004 - 21:11 Der er 9 kommentarer og
2 løsninger

paramenter hvis det hedder det

Hej

Jeg bruger:
WinExec('fil.exe', SW_SHOW);
Til at starte et program jeg har lavet, men kan man ikke sende en oplysning med start kommandoen? Alså ligesom man i asp kan skrive fil.asp?mode=hejmeddig kan man så ikke lave noget ala:
WinExec('fil.exe?hejmeddig', SW_SHOW); ??
Og hvordan modtager jeg det i mit program?

Mvh
Jesper
Avatar billede fangel Nybegynder
04. januar 2004 - 21:15 #1
normalt hedder de så
fil.exe -hejMedDig -enAndenTing
(i linux er det så normalt --hejMedDig, men det er du nok ikke intereseret i)

og det hedder "argumenter" - ved ikke hvordan det laves i Delphi, da jeg ikke kender det...

Morten
Avatar billede arne_v Ekspert
04. januar 2004 - 21:20 #2
Du kan hente hele kommando linien som CmdLine.

Du kan hente de enkelte argumenter med ParamCount og ParamStr.
Avatar billede snowball Novice
04. januar 2004 - 21:20 #3
Mht. at se hvilke parametre dit eget program er blevet kaldt med, så prøv og kig på http://www.swissdelphicenter.com/en/showcode.php?id=112

Mht. at starte et program med nogle parametre, så prøv med nedenstående:

Uses
  ShellAPI;
var
  prog, param: String;
begin
  prog := 'notepad.exe';
  param := 'c:\log.txt';
  ShellExecute(Handle,'open',PChar(prog),pchar(param),pchar(''),SW_SHOWNORMAL);
end;

Snowball
Avatar billede arne_v Ekspert
04. januar 2004 - 21:21 #4
Online help har eksempel på ParamCount og ParamStr.
Avatar billede fun22 Nybegynder
05. januar 2004 - 10:13 #5
ja, det virker jo snowball...
Men , men men...
Det skal ligge i en dll fil, og der kan jeg ikke bruge ShellExecute, da den kommer med fejl ved handle... Og ShellAPI ER unde uses. Har du/i et forslag til hvad der kunne være galt?
Avatar billede snowball Novice
05. januar 2004 - 10:29 #6
Det ved jeg ikke lige. Har ikke arbejdet så meget med DLL'er.

Snowball
Avatar billede nilla Nybegynder
05. januar 2004 - 16:25 #7
Kan du bruge det her :
lav et par globale variabel f,eks :
program:string;
prg:array[0..255] of char;

program:=dit_program.exe+' '+første_parameter+' '+anden_parameter;
strpcopy(prg,program);
winexec(prg,sw_maximize);
Avatar billede hrc Mester
06. januar 2004 - 11:05 #8
Mht. at bruge ShellExecute i en DLL - kan du ikke sende et handle med over (som parameter)?

I øvrigt er CreateProcess nok den rigtigste at bruge, idet WinExec er lavet for bagud kompatibilitet med 16-bits programmer. Den tager en masse parametre, og syntaksen er udviklet af Gates under et syretrip der gik galt!

Here goes (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createprocess.asp):

BOOL CreateProcess(
  LPCTSTR lpApplicationName,
  LPTSTR lpCommandLine,
  LPSECURITY_ATTRIBUTES lpProcessAttributes,
  LPSECURITY_ATTRIBUTES lpThreadAttributes,
  BOOL bInheritHandles,
  DWORD dwCreationFlags,
  LPVOID lpEnvironment,
  LPCTSTR lpCurrentDirectory,
  LPSTARTUPINFO lpStartupInfo,
  LPPROCESS_INFORMATION lpProcessInformation
);

Implementeret ser det sådan her ud (http://www.delphicorner.f9.co.uk/articles/wapi4.htm):

{Supply a fully qualified path name in ProgramName}
procedure ExecNewProcess(ProgramName : String);
var
  StartInfo  : TStartupInfo;
  ProcInfo  : TProcessInformation;
  CreateOK  : Boolean;
begin

  { fill with known state }
  FillChar(StartInfo,SizeOf(TStartupInfo),#0);
  FillChar(ProcInfo,SizeOf(TProcessInformation),#0);
  StartInfo.cb := SizeOf(TStartupInfo);

  CreateOK := CreateProcess(PChar(ProgramName),nil, nil, nil,False,
              CREATE_NEW_PROCESS_GROUP+NORMAL_PRIORITY_CLASS,
              nil, nil, StartInfo, ProcInfo);

  { check to see if successful }
  if CreateOK then
    //may or may not be needed. Usually wait for child processes
    WaitForSingleObject(ProcInfo.hProcess, INFINITE);
end;
Avatar billede fun22 Nybegynder
06. januar 2004 - 13:52 #9
Nu tror jeg du tabte mig... hvor skal det lige stå henne?
Avatar billede hrc Mester
07. januar 2004 - 08:42 #10
Snakker du til mig? Hvilket skal stå hvor?
Avatar billede fun22 Nybegynder
07. januar 2004 - 09:08 #11
hrc >> ja, det du lige skrev...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester