uruchomienie odzielnej aplikacji

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
fxBobi
Gaduła
Gaduła
Posty: 244
Rejestracja: 20 sie 2008, 18:43

uruchomienie odzielnej aplikacji

Nieprzeczytany post autor: fxBobi »

Jak za pomocą języka MQL4 uruchomić osobna aplikacje np. napisaną w C++?

Awatar użytkownika
xpep
Pasjonat
Pasjonat
Posty: 844
Rejestracja: 02 gru 2007, 11:50

Nieprzeczytany post autor: xpep »

mozesz napisac biblioteke w c++, w katalogu experts\samples\dllsample masz przyklad takiej biblioteki

Awatar użytkownika
luktom
Gaduła
Gaduła
Posty: 197
Rejestracja: 19 gru 2007, 14:39

Nieprzeczytany post autor: luktom »

Kod: Zaznacz cały

#import "kernel32.dll"
 int WinExec(string NameEx, int dwFlags);
#import

...

WinExec("ścieżka do aplikacji",0);

Awatar użytkownika
fxBobi
Gaduła
Gaduła
Posty: 244
Rejestracja: 20 sie 2008, 18:43

Nieprzeczytany post autor: fxBobi »

Dzięki , nawiązując jeszcze do bibliotek w C++ można również uruchomić aplikacje za pomocą "system("/.....").
Czy te komendy systemowe jak System("CLS") zawierają się w jakieś bibliotece?

Awatar użytkownika
fxBobi
Gaduła
Gaduła
Posty: 244
Rejestracja: 20 sie 2008, 18:43

Nieprzeczytany post autor: fxBobi »

Nie mogę wywołać tej funkcji

Np.

Kod: Zaznacz cały

WinExec("C:\Program Files\Aplikacja.exe",0);
Brak reakcji.

A ogólnie chciałbym uruchomić program który znajduje się w folderze "expert".
Ewentualnie w jakimś podfolderze.

Awatar użytkownika
luktom
Gaduła
Gaduła
Posty: 197
Rejestracja: 19 gru 2007, 14:39

Nieprzeczytany post autor: luktom »

Poprzez TerminalPath() możesz odczytać katalog bieżącej instancji MT4.

A co do ścieżki do aplikacji to zwróć uwagę, czy nie zawiera spacji, a jeśli tak to escape'uj całą ścieżkę w dodatkowe " " i \.

Kod: Zaznacz cały

string appPath = "\"C:\\Program files\\Terminal\\experts\\app.exe\"";
WinExec(appPath,0);

Awatar użytkownika
fxBobi
Gaduła
Gaduła
Posty: 244
Rejestracja: 20 sie 2008, 18:43

Nieprzeczytany post autor: fxBobi »

Nadal brak reakcji . Wpisałem tak ścieżkę jak podałeś w kodzie wyżej .

Chyba coś jest nie tak u mnie z ta platformą . Ale tez sprawdzałem na Admiralu. I to samo


Kod: Zaznacz cały

#import "kernel32.dll"
int WinExec(string NameEx, int dwFlags);


int start()
  {
   string appPath = "\"C:\\Program Files\\MetaTrader - FXOpen\\experts\\take.exe\"";
   WinExec(appPath,0);
   return(0);
  }
To jest zawartość skryptu który chce aby otwierał aplikacje.[/code]

Awatar użytkownika
luktom
Gaduła
Gaduła
Posty: 197
Rejestracja: 19 gru 2007, 14:39

Nieprzeczytany post autor: luktom »

A drugi #import gdzie jest?

I czy zezwoliłeś na import DLL w ustawieniach?

Awatar użytkownika
fxBobi
Gaduła
Gaduła
Posty: 244
Rejestracja: 20 sie 2008, 18:43

Nieprzeczytany post autor: fxBobi »

Oczywiście piwo się należy :)

Poprawiłem przeoczenia których wspomniałeś i działa.

---------------------------------------------------------------------------

Ponieważ sykrypt poprawnie otwiera wszystkie zainstalowane aplikacje .

Mam tylko problem z moja plikacją (exe) . Prosta która ma wyłączyć monito.
Napisana w C++ za pomocą Dev C++
Aplikacja jest konsolowa . I jak uruchamiam ręcznie to działa.

Awatar użytkownika
fxBobi
Gaduła
Gaduła
Posty: 244
Rejestracja: 20 sie 2008, 18:43

Nieprzeczytany post autor: fxBobi »

Czy mogę was prosić jeszcze o pomoc?
Tak jak nadmieniłem wyżej aplikacja np. CCleaner uruchamia sie normalnie . Ale już aplikacja napisana przeze mnie nie chce się uruchomić , a znajduje się w tym samym folderze co plik . ccleaner.exe(jest to program do czyszczenia śmieci w PC korzystam z niego dla testów)

Aplikacja jest konsolowa. Jeśli uruchamiam aplikacje ręcznie wszystko jest w porządku. Pojawia się okienko konsoli i wykonywany jest algorytm.

--------------------
Jest również inne rozwiązanie , mogłbym eksportować dane z EA do pliku po czym Aplikacja te dane by przetwarzała. Jednak jest to dość prostackie rozwiązanie tego problemu . tym bardziej że nie wiem czy nie dochodziło by do konfliktu , bo EA jak i aplikacja korzystały by z tego samego pliku.

I teraz pytanie czy nie dojdzie do konfliktu kiedy np. EA i Aplikacja będa chciałby jednocześnie skorzystać z pliku.?

Co więcej aplikacja musiał bym uruchamiać sam.


:twisted:

ODPOWIEDZ