Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

(delphi) sluiten dos-box

None
20 antwoorden
  • another Question ! :D


    Ik heb een applicatie gemaakt , waarin ik een
    DOS-applicatie open.

    Wanneer ik nu mijn applicatie uitvoer, opent hij toch een dosboxje.
    Hoe kan ik er voor zorgen dat hij wel de applicatie uitvoert, maar niet het dos-schermpje in beeld toont.

    Met vr. Gr
    Growskunk :
    :roll:
  • Hoe roep je de dosbox aan? Start je gewoon het programma dmv een opdrachregel ("C:\Programma.com")? In dat geval kan je er ">nul" achtzetten, als het goed is komt er nu geen dosbox.

    De nieuwe opdrachtregel is dan: "C:\Programma.com >nul", ik kan alleen niet garanderen dat het werkt…

    Johan
  • Hieronder mijn source :
    Access.exe is hier de dos applicatie : welke na invoer van een code een tegen-code aanmaakt.
    (wij gebruiken dit op onze helpdesk als achterdeurtje voor mensen die hun toegangscode kwijt zijn )
    Ik laat de uitvoer printen naar een tekst bestand welke ik code.txt noem.

    (opdracht regel = C:\access.exe 123456 > code.txt )
    Waar doe ik de > nul ? achter code.txt , of ervoor?

    ***********************************************
    :wink: [code:1:2a0c932ed4]

    unit test;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, Shellapi;

    type
    TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    If ShellExecute (Application.Handle, 'open','access.exe', PChar(Edit1.Text+' > code.txt'),'', SW_SHOW)<32 then
    RaiseLastWin32error;
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    var Bestand: TextFile;
    BestandsNaam,
    s : string;
    begin
    s := '';
    Bestandsnaam := 'C:\acces\code.txt';
    if not FileExists (Bestandsnaam) then
    Raise Exception.Create ('Kan bestand '+bestandsnaam+' niet vinden')
    else
    begin
    Assignfile (Bestand, Bestandsnaam);
    try
    Reset (Bestand);
    try
    ReadLn (Bestand, s);
    finally
    CloseFile (Bestand);
    end
    finally
    end;
    end;
    Edit2.Text := s;
    end;

    end.[/code:1:2a0c932ed4]

    Met vriendelijke groet :

    Growskunk
  • Oohwjah met ShellExecute…!

    Je moet het (als het werkt) áchter >code.txt zetten, dus het wordt dan:

    C:\Access.exe 12345 >code.txt >nul

    Misschien werkt het niet, maar je kan het altijd proberen! Succes!
  • Helaas ik krijg het met > nul niet aan de praat! :cry:

    Ik toch bedankt voor je hints !

    Ik zal nog wel effies stoeien met het geheel ,

    Gegroet : Growskunk A.K.A Edwin :o
  • Jammer! Dan zit er weinig meer op dat ik weet :(

    In een DOS box werkt dit wel, maar voor zover ik mij kan herinneren alleen met bepaalde programma's (zoals copy, move, dir), je zag er dan dus niets van.
  • Ik heb het vermoeden dat dit alleen bij de standaard dos commando's werkt , :cry:
    en niet bij het door (onze) programmeurs geschreven tooltje!

    Ik zal dus naar iets anders op zoek moeten.


    [i:fddc340d25]Heeft er iemand anders misschien nog een ideetje[/i:fddc340d25] 8)


    Groet Growskunk
  • Kunnen zij jou geen antwoord geven?
  • [quote:1142dd3fe2="beursstarter"]Kunnen zij jou geen antwoord geven?[/quote:1142dd3fe2]

    Doe het zelf
  • Dat is mijn eer te na ! :P

    Zij hebben een toeltje geschreven om een achter deurtje te creeeren voor onze software !
    Aangezien zij dit niet willen aanpassen naar een leuke win32 versie !
    (onze programmeurs zijn namelijk ERG eigenwijs / eigenzinnig)

    Ben ik genoodzaakt het zelf uit te zoeken!

    Omdat ik ook startend ben met programmeren leek me dit een leuke opdracht voor mezelf.

    En het was al aardig gelukt , alleen dat dosboxje zit nog dwars !

    (maar inmiddels heb ik de hint gekregen dit via een .PIF bestand te laten doen )
    Ook dit is nieuw voor mij , dus kost het weer effies wat extra tijd !
    Zo leer ik iedere dag weer !

    p.s : MR Beursstarter (weet u allemaal dan het wel ) :lol:
    of bent u niet alleen Beursstarter , maar ook Delphi-starter
  • Nou z'n haar zit wel cool hoor :lol: :lol:

    (Edwin: je sig moet ZiZa zijn…)
  • Daar was ik nou net naar opzoek !

    Alweer bedankt !

    Vriendelijke Groet,
    Growskunk
  • [quote:a0ac0247ab="Growskunk"]Daar was ik nou net naar opzoek !

    Alweer bedankt !

    Vriendelijke Groet,
    Growskunk[/quote:a0ac0247ab]

    Meen je dat nou offe… :lol:
  • hij moet alleen zonder de quote-jes (").

    En hij past hem overal aan als ik hem bij mijn profiel wijzig..
    Net als bij mijn avatar … klopt dit !

    Vriendelijke Groeten

    Growskunk
  • [quote:2cf64392fa="Growskunk"]hij moet alleen zonder de quote-jes (").

    En hij past hem overal aan als ik hem bij mijn profiel wijzig..
    Net als bij mijn avatar … klopt dit !

    Vriendelijke Groeten

    Growskunk[/quote:2cf64392fa]

    Haha :P Beetje offtopic misschien…
  • [quote:1c36d616e3="Growskunk"]Hieronder mijn source :
    Access.exe is hier de dos applicatie : welke na invoer van een code een tegen-code aanmaakt.
    (wij gebruiken dit op onze helpdesk als achterdeurtje voor mensen die hun toegangscode kwijt zijn )
    Ik laat de uitvoer printen naar een tekst bestand welke ik code.txt noem.

    (opdracht regel = C:\access.exe 123456 > code.txt )
    Waar doe ik de > nul ? achter code.txt , of ervoor?
    [/quote:1c36d616e3]

    De code onder Button1Click vervangen door het volgende…

    [code:1:1c36d616e3]
    procedure TForm1.Button1Click(Sender: TObject);
    var
    StartupInfo: TStartupInfo;
    ProcessInformation: TProcessInformation;
    SecurityAttributes: TSecurityAttributes;
    hStdInput, hStdOutput, hStdError: THandle;
    begin
    hStdInput := 0;
    hStdError := 0;

    SecurityAttributes.nLength := SizeOf(SecurityAttributes);
    SecurityAttributes.lpSecurityDescriptor := Nil;
    SecurityAttributes.bInheritHandle := True;

    hStdOutput := CreateFile('C:\acces\code.txt',
    GENERIC_WRITE, FILE_SHARE_READ,
    @SecurityAttributes, CREATE_ALWAYS,
    FILE_ATTRIBUTE_NORMAL,0);
    if (hStdOutput <> INVALID_HANDLE_VALUE) then
    try
    ZeroMemory(@StartupInfo,SizeOf(StartupInfo));
    StartupInfo.cb := SizeOf(StartupInfo);
    StartupInfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
    StartupInfo.wShowWindow := SW_HIDE;
    StartupInfo.hStdOutput := hStdOutput;
    if (CreateProcess('c:\acces\access.exe',
    '',
    Nil,
    Nil,
    True,
    0, //DETACHED_PROCESS,
    Nil,
    Nil, // start dir
    StartupInfo,
    ProcessInformation)) then
    try
    WaitForSingleObject(ProcessInformation.hProcess,INFINITE);
    finally
    CloseHandle(ProcessInformation.hProcess);
    CloseHandle(ProcessInformation.hThread);
    end
    else
    begin
    RaiseLastOSError;
    end;
    finally
    CloseHandle(hStdOutput);
    end
    else
    begin
    RaiseLastOSError;
    end;
    end;
    [/code:1:1c36d616e3]
  • Ik heb je bovenstaande stukje source gebruikt,

    hij toont niet meer de dosbox ,
    en maakt ook een bestandje code.txt aan.

    Alleen de uitvoer in de bestand blijft "0"

    Volgens mij moet de invoer uit EDIT1 nog als parameter aan access.exe worden toegevoegd.

    en ik kan niet helemaal ontdekken (of / hoe ) je dit gedaan hebt.

    In ieder geval bedankt voor het meedenken ( doe je dit altijd snachts ? :D )

    [i:08133074b0]….. ik worstel en kom boven ![/i:08133074b0]

    vr gr Edwin
  • [quote:880b21376e="Growskunk"]Ik heb je bovenstaande stukje source gebruikt,
    [/quote:880b21376e]
    Oké
    [quote:880b21376e="Growskunk"]
    hij toont niet meer de dosbox ,
    en maakt ook een bestandje code.txt aan.

    Alleen de uitvoer in de bestand blijft "0"

    Volgens mij moet de invoer uit EDIT1 nog als parameter aan access.exe worden toegevoegd.
    en ik kan niet helemaal ontdekken (of / hoe ) je dit gedaan hebt.
    [/quote:880b21376e]
    Ja klopt, die parameter moet nog worden meegegeven.

    Dit is het relevante stukje code waar de parameter meegegeven moet worden.

    [code:1:880b21376e]


    if (CreateProcess(Nil,
    PChar('c:\acces\access.exe ' + Edit1.Text),
    Nil,
    Nil,
    True,
    0, //DETACHED_PROCESS,
    Nil,
    Nil, // start dir
    StartupInfo,
    ProcessInformation)) then
    try


    [/code:1:880b21376e]
    [quote:880b21376e="Growskunk"]
    In ieder geval bedankt voor het meedenken ( doe je dit altijd snachts ? :D )
    [/quote:880b21376e]
    's nachts heb ik tijd ingeruimd voor het CT forum 8)
  • Gelukt , :D

    MAg ik u allen danken voor u medewerking, :lol:


    op naar mijn volgende project !

    Next project = een Calculator !

    :wink:
  • [quote:90fdd88f69="Growskunk"]Gelukt , :D

    MAg ik u allen danken voor u medewerking, :lol:
    [/quote:90fdd88f69]
    Bovenstaande code is ook niet voor beginners. Kennis van de Windows API is aanbevolen voor dit probleem. 8)
    [quote:90fdd88f69="Growskunk"]
    op naar mijn volgende project !

    Next project = een Calculator !

    :wink:[/quote:90fdd88f69]
    :P

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.