Avatar billede hensewg Nybegynder
31. marts 2008 - 21:07 Der er 10 kommentarer og
2 løsninger

Skrive tekst via delphi

Kan man få sit program til at skrive en tekst fra Tedit?

F.Eks.

Shellexecute(Handle, 'open', 'notepad.exe', nil,nil, SW_maximize);

nu har jeg startet notepad, hvordan får jeg så teksten fra min TEdit over i notepad?
Avatar billede stone Forsker
31. marts 2008 - 21:53 #1
//husk at uses ShellApi

procedure TForm1.Button1Click(Sender: TObject);
var
  pHandle: HWND;
begin
  Shellexecute(Handle, 'open', 'notepad.exe', nil,nil, SW_maximize);

  Sleep(500);
  pHandle := FindWindowEx(FindWindow('notepad', nil ), 0, 'Edit', nil);
  SendMessage(pHandle, WM_SETTEXT, 0, integer(Edit1.Text));
Avatar billede hensewg Nybegynder
31. marts 2008 - 22:05 #2
inden du får point, så kan du måske fortælle mig hvordan man sætter teksten ind i en kommandoprompt? prøvede din kode og satte bare CMD.exe ind i shellexecute og jeg skrev cmd der hvor der står "('notepad',nil)"
                                ^
                                |

                                Der
Avatar billede stone Forsker
31. marts 2008 - 22:35 #3
hmmm...det ved jeg faktisk ikke.
Avatar billede kroning Nybegynder
31. marts 2008 - 22:59 #4
Hvis det du vil er at kalde cmd med en parameter så er det jo muligt.
Hvis du f.eks. har kommandoen DIR stående i din Edit1

Shellexecute(Handle, 'open', 'cmd.exe', PChar('/K '+Edit1.text) ,nil, SW_maximize);
Avatar billede hensewg Nybegynder
01. april 2008 - 13:33 #5
mange tak kroning^^ det virker fint. smid et svar hvis du vil dele point. ellers får stone dem bare
Avatar billede kroning Nybegynder
01. april 2008 - 14:01 #6
k
Avatar billede hensewg Nybegynder
01. april 2008 - 14:01 #7
lige en hurtig en:
nu har jeg så fået åbnet min cmd og der står det, der står i edit1.text.
ligebag efter skal den så skrive noget selv, i samme CMD. F. eks.

Shellexecute(Handle, 'open', 'cmd.exe', PChar('/K '+Edit1.text) ,nil, SW_maximize);
Shellexecute(Handle, 'open', "det åbne program", PChar('/K '+Edit2.text) ,nil, SW_maximize);
Avatar billede kroning Nybegynder
01. april 2008 - 14:09 #8
Hvis jeg kalder
Shellexecute(Handle, 'open', 'cmd.exe', PChar('/K '+Edit1.text) ,nil, SW_maximize);
så bliver kommandoen udført med det samme og den står ikke og venter?
Avatar billede hensewg Nybegynder
01. april 2008 - 14:15 #9
jaja... men når den er startet op.. så skal jeg skrive noget andet inde i den åbne cmd.exe
Avatar billede kroning Nybegynder
01. april 2008 - 14:44 #10
Det ved jeg så ikke hvordan man gør.
Avatar billede carsten_b Nybegynder
01. april 2008 - 14:52 #11
ok... ^^
Avatar billede Slettet bruger
04. april 2008 - 10:43 #12
for at send data til en dos prompt skal man bruge named pipes ie. delphis THandleStream
men det er godt nok langhåret, så kan man læse og skrive direkte til dosprompten. Jeg lavede engang en Tmemo som simulerede en dos prompt både input og output og den virker stort. hvis nogen smider deres mail, kan jeg sende koden.
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