Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
doscommand winscp
#1
yüzdük yüzdük kuyruğuna geldik tıkandım...
ftp ye winscp  commans script ile ftp ye dosya gönderilerimi yapıyorum

örnek
baslat.bat 


Dm_FotoMSL.DosCommand1.CurrentDir   := PChar(ExtractFilePath(ParamStr(0))+'\WinSCP\' );
Dm_FotoMSL.DosCommand1.CommandLine  := PChar(ExtractFilePath(ParamStr(0))+'\WinSCP\baslat.bat');
Dm_FotoMSL.DosCommand1.Execute; 

sorunum şu örnek dosya gönderirken ftpye
Dm_FotoMSL.DosCommand1.stop
dediğimde delphi tarafı duruyor yani doscommand duruyor
ancak arka planda windows tarafında yüklemeye halen devam ediyor
bir türlü durduramadım
Cevapla
#2
(22-04-2021, Saat: 08:56)info@guzelceker.com Adlı Kullanıcıdan Alıntı: yüzdük yüzdük kuyruğuna geldik tıkandım...
ftp ye winscp  commans script ile ftp ye dosya gönderilerimi yapıyorum

örnek
baslat.bat 


Dm_FotoMSL.DosCommand1.CurrentDir   := PChar(ExtractFilePath(ParamStr(0))+'\WinSCP\' );
Dm_FotoMSL.DosCommand1.CommandLine  := PChar(ExtractFilePath(ParamStr(0))+'\WinSCP\baslat.bat');
Dm_FotoMSL.DosCommand1.Execute; 

sorunum şu örnek dosya gönderirken ftpye
Dm_FotoMSL.DosCommand1.stop
dediğimde delphi tarafı duruyor yani doscommand duruyor
ancak arka planda windows tarafında yüklemeye halen devam ediyor
bir türlü durduramadım

Merhaba,

siz komutu gönderip uygulamayı başlatıyorsunuz. Bu uygulama kendi başına bir process oluşturup işlemine devam ediyor. Arka planda bir uygulama açıyor kısacası. Durdurmak için ilgili uygulamayı kill etmeniz gerekir.

function KillTask(ExeFileName: string): Integer;
    const
     PROCESS_TERMINATE = $0001;
   var
     ContinueLoop: BOOL;
     FSnapshotHandle: THandle;
     FProcessEntry32: TProcessEntry32;
   begin
     Result := 0;
     FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
     FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
     ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
     while Integer(ContinueLoop) <> 0 do
     begin
       if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
         UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
         UpperCase(ExeFileName))) then
         Result := Integer(TerminateProcess(
                           OpenProcess(PROCESS_TERMINATE,
                                       BOOL(0),
                                       FProcessEntry32.th32ProcessID),
                                       0));
        ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
     end;
     CloseHandle(FSnapshotHandle);
   end;

Ayrıca bu tip zorluklar yerine neden Indy bileşenlerinden idFTP kullanmıyorsunuz?

İyi çalışmalar dilerim.
kisisel_logo_dark.png
WWW
Cevapla
#3
(22-04-2021, Saat: 09:11)Halil Han BADEM Adlı Kullanıcıdan Alıntı:
(22-04-2021, Saat: 08:56)info@guzelceker.com Adlı Kullanıcıdan Alıntı: yüzdük yüzdük kuyruğuna geldik tıkandım...
ftp ye winscp  commans script ile ftp ye dosya gönderilerimi yapıyorum

örnek
baslat.bat 


Dm_FotoMSL.DosCommand1.CurrentDir   := PChar(ExtractFilePath(ParamStr(0))+'\WinSCP\' );
Dm_FotoMSL.DosCommand1.CommandLine  := PChar(ExtractFilePath(ParamStr(0))+'\WinSCP\baslat.bat');
Dm_FotoMSL.DosCommand1.Execute; 

sorunum şu örnek dosya gönderirken ftpye
Dm_FotoMSL.DosCommand1.stop
dediğimde delphi tarafı duruyor yani doscommand duruyor
ancak arka planda windows tarafında yüklemeye halen devam ediyor
bir türlü durduramadım

Merhaba,

siz komutu gönderip uygulamayı başlatıyorsunuz. Bu uygulama kendi başına bir process oluşturup işlemine devam ediyor. Arka planda bir uygulama açıyor kısacası. Durdurmak için ilgili uygulamayı kill etmeniz gerekir.

function KillTask(ExeFileName: string): Integer;
    const
     PROCESS_TERMINATE = $0001;
   var
     ContinueLoop: BOOL;
     FSnapshotHandle: THandle;
     FProcessEntry32: TProcessEntry32;
   begin
     Result := 0;
     FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
     FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
     ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
     while Integer(ContinueLoop) <> 0 do
     begin
       if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
         UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
         UpperCase(ExeFileName))) then
         Result := Integer(TerminateProcess(
                           OpenProcess(PROCESS_TERMINATE,
                                       BOOL(0),
                                       FProcessEntry32.th32ProcessID),
                                       0));
        ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
     end;
     CloseHandle(FSnapshotHandle);
   end;

Ayrıca bu tip zorluklar yerine neden Indy bileşenlerinden idFTP kullanmıyorsunuz?

İyi çalışmalar dilerim.

maalesef bu işe yaramadı.. daha önce denedim
Cevapla
#4
(22-04-2021, Saat: 10:13)info@guzelceker.com Adlı Kullanıcıdan Alıntı:
(22-04-2021, Saat: 09:11)Halil Han BADEM Adlı Kullanıcıdan Alıntı: Merhaba,

siz komutu gönderip uygulamayı başlatıyorsunuz. Bu uygulama kendi başına bir process oluşturup işlemine devam ediyor. Arka planda bir uygulama açıyor kısacası. Durdurmak için ilgili uygulamayı kill etmeniz gerekir.

function KillTask(ExeFileName: string): Integer;
    const
     PROCESS_TERMINATE = $0001;
   var
     ContinueLoop: BOOL;
     FSnapshotHandle: THandle;
     FProcessEntry32: TProcessEntry32;
   begin
     Result := 0;
     FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
     FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
     ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
     while Integer(ContinueLoop) <> 0 do
     begin
       if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
         UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
         UpperCase(ExeFileName))) then
         Result := Integer(TerminateProcess(
                           OpenProcess(PROCESS_TERMINATE,
                                       BOOL(0),
                                       FProcessEntry32.th32ProcessID),
                                       0));
        ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
     end;
     CloseHandle(FSnapshotHandle);
   end;

Ayrıca bu tip zorluklar yerine neden Indy bileşenlerinden idFTP kullanmıyorsunuz?

İyi çalışmalar dilerim.

maalesef bu işe yaramadı.. daha önce denedim

Demek ki yanlış yapıyorsunuz... Kulağı tersten tutmaya gerek yok. idFTP kullanabilirsiniz.

Kolay gelsin.
kisisel_logo_dark.png
WWW
Cevapla
#5
(22-04-2021, Saat: 10:24)Halil Han BADEM Adlı Kullanıcıdan Alıntı:
(22-04-2021, Saat: 10:13)info@guzelceker.com Adlı Kullanıcıdan Alıntı: maalesef bu işe yaramadı.. daha önce denedim

Demek ki yanlış yapıyorsunuz... Kulağı tersten tutmaya gerek yok. idFTP kullanabilirsiniz.

Kolay gelsin.

işim sadece dosya göndermek yada almak 
olsa haklısınız... bir çok varyasyonlar var senkronize gibi... winscp scripts o konuda güzel  ve sorun da yok sadece delphi üzerinden durdurmada sorunum var
Cevapla
#6
tamam dır sorun çözüldü killtask ile çözüldü.. atladığım bişey varmış buldum
Cevapla
#7
Yapmaya çalıştığünız şey local bir dosyayi sftp ile uzak sunucuya mi yuklemek?
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#8
(22-04-2021, Saat: 15:06)info@guzelceker.com Adlı Kullanıcıdan Alıntı: tamam dır sorun çözüldü killtask ile çözüldü.. atladığım bişey varmış buldum

Merhabalar,

Öncelikle sorunu çözümlemeniz güzel.

Sonrasında atladığınız "o bir şey" i buradan paylaşmayı düşünürmüsünüz?
Belki farklı bir arkadaşımıza fikir ve destek olur.

Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#9
(23-04-2021, Saat: 09:20)hi_selamlar Adlı Kullanıcıdan Alıntı:
(22-04-2021, Saat: 15:06)info@guzelceker.com Adlı Kullanıcıdan Alıntı: tamam dır sorun çözüldü killtask ile çözüldü.. atladığım bişey varmış buldum

Merhabalar,

Öncelikle sorunu çözümlemeniz güzel.

Sonrasında atladığınız "o bir şey" i buradan paylaşmayı düşünürmüsünüz?
Belki farklı bir arkadaşımıza fikir ve destek olur.

Kolay gelsin.

KillTask ta cmd.exe yi kapatmaya çalışıyormuşum oysaki winscp.exe işlem yapıyormuş..  
KillTask(winscp.exe)
Cevapla




Konuyu Okuyanlar: 1 Ziyaretçi