AW: CreateProcess wirft Kernelbase Error
So geht's.. (Aber lahm, selbe Problem mit der Batch Datei)
@KodeZwerg Kannst ja mit der alten vergleichen wenn du bock drauf hast :) Nebenbei man kann auch auf UniqueString(CommandLine); verzichten wenn man pchar(CommandLine) so definiert. pchar(WideString(CommandLine)) Interessant wäre hier eine Art Progressbar (Man sieht nicht wirklich das sich etwas tut) aber ich sehe nicht wo man hier ansetzen kann. Kenne die max. Durchläufe nicht. Thema erledigt |
AW: CreateProcess wirft Kernelbase Error
Hier noch eine kleine Animation damit man überhaupt etwas sieht das sich was tut.
Function einfach ersetzen.
Delphi-Quellcode:
Ok gut mit den Spielereien war nur ein Test Projekt für meinen Video Player.
Function ReadPipe(StdIo: TStdIO): AnsiString;
var bAvailable: DWORD; Buffer: PAnsiChar; begin if StdIo.stdOut.hRead <> INVALID_HANDLE_VALUE then begin bAvailable := 0; // First, check the size of the current pipe buffer PeekNamedPipe(StdIo.stdOut.hRead, nil, 0, nil, @bAvailable, nil); // if there is data waiting, fetch it if bAvailable > 0 then begin // set the new length of the result and initialize it Buffer := PAnsiChar(StrAlloc(bAvailable + 1)); try ZeroMemory(Buffer, bAvailable + 1); // Read all data from the pipe ReadFile(StdIo.stdOut.hRead, Buffer^, bAvailable, bAvailable, nil); SetLength(result, bAvailable); CopyMemory(PAnsiChar(result), Buffer, bAvailable); finally StrDispose(Buffer); end; end else begin result := result + '.'; // <<<<<<<< Animation sleep(200); if length(Result) > 63 then Result := ''; end; end else result := ''; end; Eine perfekte Fortschrittanzeige läßt sich leider nicht realisieren. |
AW: CreateProcess wirft Kernelbase Error
Zitat:
Ich habe mir gerade mal diese youtube-dl.exe geladen, die hat ja reichlich parameter. Mann-o-mann. Kannst Du mir bitte anhand eines Kommandozeilen Befehls zeigen was du dann übergibst um alles in Gang zu bringen? Damit es keine Mißverständisse gibt, sowas meine ich
Delphi-Quellcode:
usw.
c:\youtube\youtube-dl.exe argument1 argument2
Danke und vorab Frohe Ostern! |
AW: CreateProcess wirft Kernelbase Error
Pfad wo sich die exe befindet.
Delphi-Quellcode:
folderyoutube := ExtractFilePath(ParamStr(0)) + 'youtube-dl.exe';
Argument.
Delphi-Quellcode:
folderyoutube + ' -U'
aktualisiert das Exe File Zitat:
Zitat:
Habe da noch ein Problem
Delphi-Quellcode:
Das Handle PI.dwProcessId sollte eigentlich in Ordnung sein wirft aber einen Fehler 'Das Handle ist ungültig'
if not GenerateConsoleCtrlEvent(CTRL_BREAK_EVENT, Stophandle{PI.dwProcessId}) then
begin Aber ist ein anderes Thema. |
AW: CreateProcess wirft Kernelbase Error
Zitat:
Zitat:
Delphi-Quellcode:
probiert?
GenerateConsoleCtrlEvent(CTRL_BREAK_EVENT, 0)
Wenn die Sterne gut stehen habe ich morgen auch ein paar Demos startklar. |
AW: CreateProcess wirft Kernelbase Error
Zitat:
|
AW: CreateProcess wirft Kernelbase Error
Zitat:
Öffne cmd.exe mit Adminrechten und Paste das da rein. Zitat:
Das geht flott aber die Aktualisierung der EXE selber leider nicht. Zitat:
Fortschrittanzeige kannst du so verwirklichen. Aber wie ich schon sagte ich benötige es nicht.
Delphi-Quellcode:
function ExtractTextBetween(const Input, Delim1, Delim2: string): string;
var aPos, bPos: Integer; begin result := ''; aPos := Pos(Delim1, Input); if aPos > 0 then begin bPos := PosEx(Delim2, Input, aPos + Length(Delim1)); if bPos > 0 then result := Copy(Input, aPos + Length(Delim1), bPos - (aPos + Length(Delim1))); end; end;
Delphi-Quellcode:
function GetPercentofVideo(str: String; lastpercent: integer): Integer;
var temp:String; itemp:integer; test:integer; begin temp := ExtractTextBetween(str,'[download]','% of'); try temp := trim(temp); Val(temp,itemp,test); Result := round(itemp); except Result := lastpercent; end; end;
Delphi-Quellcode:
Du kannst mein Projekt damit aktualisieren zum testen.
aForm.RichEdit1.Text := Output + aForm.RichEdit1.Text;
tmpPercent := GetPercentofVideo(aForm.RichEdit1.Text, percent); percent := tmpPercent; aForm.ProgressBar1.Position := percent; |
AW: CreateProcess wirft Kernelbase Error
Zitat:
Danke für Deine Erklärung wie man es aufruft um was zu erhalten, hatte ich eigentlich nur für Dich benötigt, hat sich ja von selbst erledigt. (auf cmd ebene nutz ich was für mich besseres, yaydl (hier findet man eine .exe davon), das hat zwar hier und da ein paar macken, aber läuft ordentlich) auf browser ebene macht es ein plugin, auf Programm ebene nutze ich einen download manager.) Mein Gedanke war halt, weil Du was von einer progress anzeige meintest, das Du tatsächlich was laden wolltest. So krass vertan hab ich mich ja schon lange nicht mehr. Coole Methode ExtractTextBetween(), ich hätte wahrscheinlich den Ansipuffer von der Konsole verwendet um da per Laufzeit was zu regeln, wieder dazu gelernt! Die Zeit den Update zu beschleunigen, da fällt mir nichts ein, ich habe es zwar schon minimal beschleunigt da ich die Python Skripte direkt nutze, nicht die .exe, aber Python reinladen und das ausführen zu lassen dauert seine Zeit. (Die Update Prozedur schlingelt sich leider durch fast alle Skripte durch) Für mich war halt die Herausforderung sehr Interessant mal wieder was Sinnvolles mit Pipes anzustellen. Wenn es nur ums Update geht würde ich gar nichts darstellen lassen, ein freundliches label "background update in progress" und den im Hintergrund-Thread machen lassen, ob es eine Sekunde oder Stunde dauert kann Dir doch dann egal sein, es liegt ja nicht an Dir. (Man kann ja eine Kopie starten falls während des updates noch ein Aufruf erfolgt.) Aber da Du nicht ich bist, hast Du ja eh vollkommen andere Pläne, die ich respektiere. Nächste Woche lese ich mir alles nochmal durch, update alles so wie Du beschrieben hast. Danke für die mehr-Arbeit mit der progress anzeige. 2 1/2 verschiedene Wege mit Pipes zu arbeiten habe ich bereits erarbeitet, leider nichts was mehr speed beim ausführen bringt, nur verschiedene Wege um ans Ziel zu kommen. |
AW: CreateProcess wirft Kernelbase Error
Zitat:
Wie Ich schon sagte da hilft auch keine Batch ohne Code. Warum man da keine Fortschrittanzeige implementiert hat beim OutPut ist mir auch ein Rätzel. Aber solange die Animation läuft sehe ich wenigstens das sich überhaupt was tut. Zitat:
|
AW: CreateProcess wirft Kernelbase Error
Hier ist ein Update mit oben genannten Änderungen.
Url kopieren mit linker Maustaste ins Edit klicken der Rest erklärt sich von selbst. Sorry mehr mache ich nicht. In meinen Player übernimmt das der Wrapper für Youtube 3DYDYoutube von daher benötige ich es nicht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz