Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: FTP i VBA (problem z sendkeys)
Jelcyn
Admin forum




Typ: admin
Postów: 895
Zarejestrowany: Apr 2002
FTP i VBA (problem z sendkeys)

Oto pytanie kolegi (brabus55 małpka interia.pl), ktory ma problem z zalogowaniem sie na forum:

Pracuje na XP i office97
Muszę z poziomu VBA sciągnąć przez ftp kilka plików.
Udaje mi sie otworzyć cmd.exe mianowice zadeklarowałem wpierw w module

Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal
lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String,
ByVal nShowCmd As Long) As Long

następnie w formularzu

Private Sub Command1_Click()
Dim Plik As String
Dim X
Plik = "C:\WINDOWS\System32\cmd.exe"
X = ShellExecute(hwnd, "open", Plik, &O0, &O0, SW_NORMAL)
End Sub

lub nawet prościej

Private Sub Command1_Click()
Dim X
X = Shell("C:\WINDOWS\System32\cmd.exe"
End Sub

ale wciąż nie potrafię przekazać tam sterowania np.

ftp                            Chr(10)
open 192.168.0.1      Chr(10)
"user5"                    Chr(10)
"passwor"                Chr(10)
cd /users                  Chr(10)
get plik.txt              Chr(10)

Czy cos w tym stylu, mam nadzieję, że ktoś pomoże, może podpowie inny sposób
Proszę zwrócić uwagę na okrojoną ilość bibliotek w office97



Dodam jeszcze, ze probowalem z sendkeys (VB i VBA) ale cos okno trybu MSDOS jest oporne na ta instrukcje bo np. kalkulator przyjmuje wysyłane klawisze, ale MS-DOS nie :-(


_____________________________________________
Jelcyn
vb4all(małpka)canpol.pl
http://www.coderscity.pl/no-vb4all * http://www.jelcyn.com

02-12-2004 09:49
Pokaż profil Jelcyn  Wyślij email do Jelcyn   Odwiedź stronę Jelcyn       270849979    6237704
Piotr T




Typ: neutral
Postów: 176
Zarejestrowany: May 2004

Uruchom cmd z paarametrem "cmd /?" - tam jest dośc długa lista parametrów do opisania


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

02-12-2004 15:01
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003

Myślę przyjacielu, że za pomocą wiersza poleceniń i SendKeys() tego nie zrobisz.

Rozwiązanie Piotra może pomóc, pod warunkiem, że będziesz wiedział, jakim przełącznikiem się aktualnie posłużyć (wiersz poleceń po wykonaniu polecenia nie może się zakończyć)

Proponuję, byś poszczególne instrukcje zapisywał do pliku tekstowego o rozszerzeniu *.bat
Czyli plik Twój bedzie miał postać:

ftp
open 192.168.0.1
"user5"
"password"
cd /users
get plik.txt
bye 


Po zapisaniu danych do pliku uruchom go za pomocą ShellExecute() lub Shell!
Jeśli nie wystąpią błędy podczas wykonywania poleceń w wierszu poleceń, będziesz mógł sprawdzić, czy plik został pobrany i wtedy dowolnie na nim pracować.

Pamiętaj, że wykonywany w ten sposób program (*.bat) może się nie zakończyć zanim zostaną uruchomione kolejne instrukcje w Twoim programie!


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

03-12-2004 19:31
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
Piotr T




Typ: neutral
Postów: 176
Zarejestrowany: May 2004

Rozwiązanie dobre ale... Win XP nie obsługuje plików wsadowych, gdyż nie są prawidłową aplikacją systemu WIN.32 - niestety ale pozostaje only właściwe wykorzystanie cmd.exe z odpowiednim ciągiem parametrów


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

03-12-2004 19:46
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003

Aż muszę sprawdzić...

Tylko, że nie mam XP

Przyznam się, że tego nie wiedziałem...
Człowiek uczy się całe życie i głupi umiera - tak mówi przysłowie.


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

03-12-2004 19:56
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
Piotr T




Typ: neutral
Postów: 176
Zarejestrowany: May 2004

spoko ja nieraz się już sparzyłem na systemach XP


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

03-12-2004 20:00
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
HejHo




Typ: neutral
Postów: 66
Zarejestrowany: Apr 2003

WinXP obsluguje pliki wsadowe! pod warunkiem że zapisze je sie jako .bat

04-12-2004 17:34
Pokaż profil HejHo  Wyślij email do HejHo        6384729
Piotr T




Typ: neutral
Postów: 176
Zarejestrowany: May 2004

Win XP nie obsługuje plików wsadowych - spróbuj uruchomić Autoexec.bat


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

04-12-2004 20:02
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
HejHo




Typ: neutral
Postów: 66
Zarejestrowany: Apr 2003

XP nie uruchamia Autoexec.bat (i Config.sys), ale inne pliki .bat uruchamia !

05-12-2004 11:43
Pokaż profil HejHo  Wyślij email do HejHo        6384729
Piotr T




Typ: neutral
Postów: 176
Zarejestrowany: May 2004

Inne pliki bat powiadasz - spójrz na nagłówek okna pliku bat którego uruchomiłeś i co tam jest napisane - cmd.exe. Zmień sobie rozszerzenie tego pliku z bat na cmd i co też się uruchomi - a tu masz przykład napełnienia pliku bat danymi:
open 192.168.0.1
echo
pause

----------------------
odpowiedź CMD

Cocuments and SettingsPulpit>open 192.168.1.1
Nazwa 'open' nie jest rozpoznawana jako polecenie wewnętrzne lub zewnętrzne,
program wykonywalny lub plik wsadowy.

Cocuments and SettingsPulpit>echo
ECHO jest włączone.

Cocuments and SettingsPulpit>pause
Aby kontynuować, naciśnij dowolny klawisz . . .
-----------
A teraz inaczej
ftp open 192.168.0.1


Przesyła pliki do i z komputera, na którym jest uruchomiona usługa serwera FTP
(niekiedy nosi nazwę demon). FTP może być używane interakcyjnie.

FTP [-v] [-d] [-i] [-g] [-s:nazwa_pliku] [-a] [-w:rozmiar_okna] [-A] [host]

-v                Eliminuje wyświetlanie odpowiedzi zdalnego serwera.
-n                Eliminuje automatyczne logowanie przy początkowym połączeniu.

-i                Wyłącza interakcyjne komunikaty podczas przesyłania
                  wielu plików.
-d                Włącza debugowanie.
-g                Wyłącza globbing nazwy pliku (zob. polecenie GLOB).
-s:nazwa_pliku    Określa plik tekstowy zawierający polecenia FTP; polecenia
                  zostaną automatyczne wywołane po otwarciu sesji FTP.
-a                Użyj dowolnego lokalnego interfejsu podczas nawiązywania
                  połączenia.
-A                Zaloguj się jako użytkownik anonimowy.
-w:rozmiar_buforu Zastępuje domyślny rozmiar (4096) buforu transmisji.
host              Określa nazwę hosta lub adres IP zdalnego hosta, z którym
                  jest nawiązywane połączenie.

PS:
- polecenia mget i mput przyjmują y/n/q jako tak/nie/zakończ (yes/no/quit).
- Aby anulować polecenie, naciśnij klawisze Ctrl+C.

i to tylko wykonywane było przez CMD.exe

Ten problem z plikami bat - już przerabialiśmy w naszej firmie w związku ze zmianą tylko domeny logowania - i kolega z działu IT odpowiedzialny za poprawne działanie sprzętu specjalnie pisał dwa skrypty dla systemów NT i XP opierający się o plik CMD i dla niższych systemów plik BAT

dobra a teraz przejdźmy do rzeczy: małe włamanko na serwer: plik wsadowy


ftp  ://[sUsername[:sPassword@]]s192.168.1.1
pause

----------
i odpowiedź serwera



Cocuments and SettingsPulpit>ftp  ://[sUsername[:sPassword@]]s192.168.
1.1
Połączony z ://[sUsername[:sPassword@]]s192.168.1.1.serwer.pl.
220---------- Welcome to Pure-FTPd ----------
220-You are user number 3 of 99 allowed.
220-Local time is now 12:43. Server port: 21.
220-This is a private system - No anonymous login
220 You will be disconnected after 5 minutes of inactivity.
Użytkownik (://[sUsername[:sPassword@]]s192.168.1.1.serwer.pl: (none)):


[Post edytowany dnia 05-12-2004 12:50 przez Piotr T]


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

05-12-2004 12:19
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003

Piotrze, jeśli dobrze zrozumiałem, to:
- da się uruchomić ftp'a przesyłając polecenia z pliku
- plik wsadowy nie będzie konieczny.

FTP [-v] [-d] [-i] [-g] [-s:nazwa_pliku] [-a] [-w:rozmiar_okna] [-A] [host]
-s:nazwa_pliku    Określa plik tekstowy zawierający polecenia FTP; polecenia
                  zostaną automatyczne wywołane po otwarciu sesji FTP.

...czyli,
Jeśli wywołam shell'em cmd.exe przesyłając w strumieniu danych polecenie ftp -s:nazwa_pliku
to zostaną wykonane polecnia ftp z tego pliku.

Wniosek:
Zapisać komendy ftp do pliku tekstowego, a następnie wywołać funkcję Shell() lub ShellExecute(), by uruchomiła cmd.exe z parametrem ftp -s:nazwa_pliku_z_poleceniami_ftp

To tylko teoria, bo nie mam gdzie tego sprawdzić...


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

05-12-2004 12:59
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
Piotr T




Typ: neutral
Postów: 176
Zarejestrowany: May 2004

Tak shellexecute powinien uruchomić taki skrypt - tylko skrypt musi być pisany tak jak wspomniałeś w jednej linii czyli w strumieniu. Możesz także stworzyć plik bat i napełnić go danymi , ale klikając w niego i tak zostanie uruchomiony cmd.exe oczywiście czytając parametry z pliku wsadowego. Plik ftp.exe potrzebuje parametrów do działania.
przykład skryptu:

ftp  ://[sUsername[:sPassword@]]s192.168.1.1

aha sam Ftp.exe też uruchomisz ale dostaniesz tylko znak Command Prompt - czyli mógłbyś wpisywać kolejne polecenia sesji ręcznie - ale po co

[Post edytowany dnia 05-12-2004 13:45 przez Piotr T]


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

05-12-2004 13:32
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
Wszystkich odpowiedzi: 11 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1