AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Shellexecute die tausendste

Ein Thema von Ati · begonnen am 2. Sep 2004 · letzter Beitrag vom 7. Sep 2004
Antwort Antwort
Seite 1 von 2  1 2      
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#1

Shellexecute die tausendste

  Alt 2. Sep 2004, 09:03
Mahlzeit Leute,
ich möchte ein externes Programm mit folgendem Befehl starten
shellexecute(application.Handle,nil,PChar('D:\Pathworks\powerterm\pt525.exe'),nil,nil,SW_Shownormal); Dies funktioniert jedoch nicht so als wenn ich das normal von Hand starte. Ich habe mal zwei Screenshots gemacht, damit ihr den Unterschied sehen könnt. Shell1 ist das normale Startbild wenn ich das Programm über eine Verknüpfung starte. Shell2 ist das Startbild bei meiner Delphi-Version. Vielleicht kann mir ja mjemand helfen da die Suche diesbezüglich nichts gebracht hat.

Ati
Miniaturansicht angehängter Grafiken
shell2.jpg   shell1.jpg  
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Shellexecute die tausendste

  Alt 2. Sep 2004, 09:07
Hoi

Übergibt die Verknüpfung vielleicht noch irgendwelche Parameter?

Gruss
Shaman
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#3

Re: Shellexecute die tausendste

  Alt 2. Sep 2004, 09:17
Nicht das ich wüßte. Selbst wenn ich über den Explorer in das Verzeichnis reingehe und die EXE per doppelklick starte kommt das ganz normale Startbild (shell1)
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#4

Re: Shellexecute die tausendste

  Alt 2. Sep 2004, 11:02
Übergib mal ShellExecute den Working-Path der Anwendung.
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Benutzerbild von S2B
S2B

Registriert seit: 1. Feb 2004
Ort: Aachen
1.268 Beiträge
 
#5

Re: Shellexecute die tausendste

  Alt 2. Sep 2004, 11:25
Versuch mal das, vielleicht bringt das was:
shellexecute(application.Handle,'open',PChar('D:\Pathworks\powerterm\pt525.exe'),nil,nil,SW_Shownormal);
Simon Praetorius
Gruß
S2B
  Mit Zitat antworten Zitat
silentAMD

Registriert seit: 27. Sep 2003
203 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Shellexecute die tausendste

  Alt 2. Sep 2004, 12:15
hi,

lösungsmöglichkeiten:

a.) trenne mal den pfad vom dateinamen:

ShellExecute(Application.Handle, nil, PChar('pt525.exe'), nil, PChar('D:\Pathworks\powerterm\'), SW_NORMAL);

b.) schreibe chdir('D:\Pathworks\powerterm\') vor dem shellexecute befehl



das gleiche problem hatte ich nämlich auch (beim öffnen des hauptmenüs der gamestar-dvd) da sind die grafiken nicht geladen


mfg
  Mit Zitat antworten Zitat
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#7

Re: Shellexecute die tausendste

  Alt 2. Sep 2004, 14:17
Danke Silent. Lösung a war richtig. dann kann ich mich ja jetzt damit beschäftigen, wie ich dem Programm Strings schicken kann.
Vielen Dank nochmal
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#8

Re: Shellexecute die tausendste

  Alt 3. Sep 2004, 13:30
So meine Herren ich möchte dann jetzt auch mal mit unwissenheit glänzen
Ich möchte das gestartete Programm ja fernsteuern. Man hat mir mal als Tip was von TClipboard gesagt kann damit jedoch nichts anfangen. Also habe ich mir Sendmessage, FindWindow etc. angeschaut. Ich schaffe es also bisher das Programm zu starten und kann auch die Proc-ID auslesen. Wenn ich jetzt also einen String an das Programm schicken will, es handelt sich hierbei um eine Terminalemulation, ändere ich auf einmal den Titel des Fensters . Damit alle auch mal herzhaft lachen können stell ich mal meinen Quelltext rein.
Anmerkung: Viele sachen sind eigentlich Überflüssig ich mache es jedoch um nitr diverse Sachen anzeigen zu lassen.
Delphi-Quellcode:
unit mainu;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);



  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}
function EnumWindowsProc(const hWnd : word; Param: lParam): LongBool; stdcall;
var

  Buffer: array[0..1024] of Char;
begin
  Result := True;
  GetWindowText(hWnd, Buffer, sizeof(Buffer));
  if lstrlen(Buffer) = 0 then
   begin
    exit;
   end
  else
   begin


   Form1.Memo1.Lines.Add (buffer);


   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(Application.Handle, nil, PChar('pt525.exe'), nil, PChar('D:\Pathworks\powerterm\'), SW_NORMAL);
end;

procedure TForm1.Button2Click(Sender: TObject);
var

LPARRAM : DWord;
begin

EnumWindows (@EnumWindowsProc,Integer(@LPARRAM));
end;

procedure TForm1.Button3Click(Sender: TObject);
var i:integer;
begin
for i := 0 to form1.Memo1.Lines.Count-1 do
   form1.Memo1.Lines.Delete(i);
end;

procedure TForm1.Button4Click(Sender: TObject);
var procid:hwnd;
    s:string;
begin
if findwindow(nil,'(A) LAT (KFO) - PowerTerm 525')<>0 then
begin
s:='start';
showmessage('Läuft!!') ;
procid:=findwindow(nil,'(A) LAT (KFO) - PowerTerm 525');
showmessage('Proc-ID= '+inttostr(procid));
SendMessage(procid, WM_SETTEXT, 0, Integer(@s[1]));
end
else
Showmessage('Läuft nicht');


end;

end.
Hilfe wäre echt nett.

Ati
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#9

Re: Shellexecute die tausendste

  Alt 3. Sep 2004, 14:49
Such doch mal im Web nach Bei Google suchenSendKeys Ken Henderson.
Das ist eine Unit, die an ein Fenster mit bestimmtem Name Tastendrücke senden kann.

Oder du sendest jeden Buchstaben einzeln mit keybd_event(). Dazu muss das Fenster, das die Tastendrücke erhalten soll, aber erst in den Vordergrund.
  Mit Zitat antworten Zitat
TStringlist

Registriert seit: 1. Dez 2003
360 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Shellexecute die tausendste

  Alt 3. Sep 2004, 19:24
@Ati

...Warum sich auf einmal der Titel des Fensters änderte? Weil das nunmal eben auch eine ganz normale Funktion einer WM_SetText -Message ist.

Anstatt den Fenster-Title auszulesen (so wie du das ja mit der von dir in 'EnumWindowsProc' benutzten Api-Funktion "GetWindowText" getan hast), wird ein solcher Titel durch diese Message jetzt also beschrieben bzw. geladen .....immer vorausgesetzt: Die Message-Handle identifiziert auch jeweils ein echtes Programm-Fenster!!! Identifiziert diese Message-Handle jedoch z.B. nur ein TEdit-Control, dann wird anstelle des hier nicht vorhandenen Titles jetzt dafür aber dessen Text-Property geladen...

...Im Falle deines Progs könntest du also nun ein solches TEdit-Control (auch unsichtbar) auf deine Form packen und zu diesem dann jeweils irgendwelche Kommando-Strings hinschicken. Im OnChange-Eventhandler dieses TEdits könntest du dann anschließend auf dort ankommende Kommandos reagieren.
MfG (& Thx ggf.)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 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