Uruchomienie pliku Java .jar wewnątrz Mql
Uruchomienie pliku Java .jar wewnątrz Mql
Zaprogramowałem plik w Java do rozszerzenia .jar i chciałbym wywołać go wewnątrz kodu mql.
Zimportowałem
#import kernel32.dll
int WinExec(string NameEx, int dwFlags);
i następnie w funkcji start() uruchomiłem swój plik
WinExec(sciezka/program.jar komenda1 komenda2,0);
Nic się nie dzieje. Czy nie powinienem skorzystać z innej funkcji ? Jeśli tak to z jakiej ? Znalazłem jeszcze coś takiego:
execl("java","java","jar myprog.jar komenda1 komenda2",NULL);
jednakże nie wiem jaką bibliotekę zimportowac by móc z niej korzystac.
Zimportowałem
#import kernel32.dll
int WinExec(string NameEx, int dwFlags);
i następnie w funkcji start() uruchomiłem swój plik
WinExec(sciezka/program.jar komenda1 komenda2,0);
Nic się nie dzieje. Czy nie powinienem skorzystać z innej funkcji ? Jeśli tak to z jakiej ? Znalazłem jeszcze coś takiego:
execl("java","java","jar myprog.jar komenda1 komenda2",NULL);
jednakże nie wiem jaką bibliotekę zimportowac by móc z niej korzystac.
fx-forum
Kod: Zaznacz cały
WinExec("javaw.exe sciezka/program.jar komenda1 komenda2",0);
Kod: Zaznacz cały
ShellExecute(NULL, "open", "javaw.exe sciezka/program.jar komenda1 komenda2', NULL, NULL, SW_SHOW) )
Rozwinę może trochę myśl bo nadal mi nie wychodzi.
Pomysł jest taki. Jeden skrypt zapisuje wszystkie obiekty jakie mam na wykresie do pliku ( linie s/r , linie trendu, etc ). Plik wysyła na serwer FTP. ( do tego momentu wszystko jest ok, plik znajduje się już na FTP ). Następnie na innym komputerze odpalany jest skrypt który pobiera ten plik i zapisuje go w folderze MT4. ( Nie potrafiłem połączyć się przez MT4 z serwerem FTP i pobrać z niego plik więc napisałem prosty program w Javie ).
Zerknij jeszcze na to jak możesz:
(...)jakiś kod(...)
string path=TerminalPath();
WinExec("javaw.exe -jar "+ path+"/experts/files/ftp.jar"+ " C:\\",0)
Wyrzuca błąd: unnable to access Jar file
Plik napisany w Javie łączy się z serwerem ftp, pobiera stamtąd plik, który zapisuje w folderze C:// ( dla uproszczenia, docelowo ma pobierać plik i zapisywać go w folderze files Mt4. Następnie uruchamiam skrypt który wszystko zapisuje na wykresie. Dzięki temu w prosty sposób moge przenosić swoje kreski na inne platformy na innych komputerach i aktualizowac je na bieżąco tak żeby wszędzie mieć to samo.
Pomysł jest taki. Jeden skrypt zapisuje wszystkie obiekty jakie mam na wykresie do pliku ( linie s/r , linie trendu, etc ). Plik wysyła na serwer FTP. ( do tego momentu wszystko jest ok, plik znajduje się już na FTP ). Następnie na innym komputerze odpalany jest skrypt który pobiera ten plik i zapisuje go w folderze MT4. ( Nie potrafiłem połączyć się przez MT4 z serwerem FTP i pobrać z niego plik więc napisałem prosty program w Javie ).
Zerknij jeszcze na to jak możesz:
(...)jakiś kod(...)
string path=TerminalPath();
WinExec("javaw.exe -jar "+ path+"/experts/files/ftp.jar"+ " C:\\",0)
Wyrzuca błąd: unnable to access Jar file
Plik napisany w Javie łączy się z serwerem ftp, pobiera stamtąd plik, który zapisuje w folderze C:// ( dla uproszczenia, docelowo ma pobierać plik i zapisywać go w folderze files Mt4. Następnie uruchamiam skrypt który wszystko zapisuje na wykresie. Dzięki temu w prosty sposób moge przenosić swoje kreski na inne platformy na innych komputerach i aktualizowac je na bieżąco tak żeby wszędzie mieć to samo.
fx-forum
Poprawiłem i błąd jest ten sam:
Unnable to access Jar File.
Usunałem z funkcji WinExec przedrostek -jar , przerobiłem plik Javy by nie potrzebował żadnych dodatkowych parametrów i otrzymuję błąd:
Could not find the main class. Pobieżnie szukając znalazłem informację że tego typu błąd może być spowodowany wadliwą instalacją środowiska Javy ( virtual machine ). Tyle że programuje inne aplikacje i nie spotkałem się z tego typu błędem wcześniej.
WinExec("javaw.exe"+" "+ path+"\experts\files\ftp.jar",0);
zamiast
WinExec("javaw.exe -jar"+" "+ path+"\experts\files\ftp.jar",0);
Unnable to access Jar File.
Usunałem z funkcji WinExec przedrostek -jar , przerobiłem plik Javy by nie potrzebował żadnych dodatkowych parametrów i otrzymuję błąd:
Could not find the main class. Pobieżnie szukając znalazłem informację że tego typu błąd może być spowodowany wadliwą instalacją środowiska Javy ( virtual machine ). Tyle że programuje inne aplikacje i nie spotkałem się z tego typu błędem wcześniej.
WinExec("javaw.exe"+" "+ path+"\experts\files\ftp.jar",0);
zamiast
WinExec("javaw.exe -jar"+" "+ path+"\experts\files\ftp.jar",0);
fx-forum
Kod: Zaznacz cały
#import "shell32.dll"
int ShellExecuteA(int hWnd,int lpVerb,string lpFile,int lpParameters,int lpDirectory,int nCmdShow);
#import
Kod: Zaznacz cały
ShellExecuteA(0,0,"path+"\experts\files\ftp.jar"",0,0,5);
Poco się tak męczyć z tą javą.
Jak chcesz tylko pobrać plik z ftpa to weź i odpal curl.exe.
Możesz łatwo podać mu parametry - host, hasło itd. Odpadnie Ci martwienie się o środowisko uruchomieniowe javy.
A tak ogólnie to jawa może nie być dostępna na ścieżce. Więc jak odpalasz coś poprzez WinExec czy tam ShellExecute to najpewniej jest odplalić java.exe podając wraz ze ścieżką. Jako parametr przekazujesz ścieżkę do jar itp.
Jak chcesz tylko pobrać plik z ftpa to weź i odpal curl.exe.
Możesz łatwo podać mu parametry - host, hasło itd. Odpadnie Ci martwienie się o środowisko uruchomieniowe javy.
A tak ogólnie to jawa może nie być dostępna na ścieżce. Więc jak odpalasz coś poprzez WinExec czy tam ShellExecute to najpewniej jest odplalić java.exe podając wraz ze ścieżką. Jako parametr przekazujesz ścieżkę do jar itp.
Drugiej pochwały już nie będę wystawiał ale Shell32 działa. Fantastyczna funkcja.
Korzystam z Javy bo jest dla mnie łatwiejsza i większość rzeczy jakie wymyślę jestem w stanie napisać. Java jest moim pierwszym językiem.
Jakbyś mógł pokazać dokładniej Green jak wykorzystać curl.exe wraz z parametrem, który mu się podaje ( strona www i miejscem na dysku ) to również pochwała się będzie należeć. Narazie jako laik z C nie potrafię tego obsłużyć.
Korzystam z Javy bo jest dla mnie łatwiejsza i większość rzeczy jakie wymyślę jestem w stanie napisać. Java jest moim pierwszym językiem.
Jakbyś mógł pokazać dokładniej Green jak wykorzystać curl.exe wraz z parametrem, który mu się podaje ( strona www i miejscem na dysku ) to również pochwała się będzie należeć. Narazie jako laik z C nie potrafię tego obsłużyć.
fx-forum