[Delphi] ShellExecute vs Skrot na pulpicie

0

Mam dosc dziwny problem. Jest sobie aplikacja geodezyjna - EWMapa w wersji 8. Gdy odpalam ja standardowo poprzez skrot na pulpicie, wszystko smiga. Jdenak gdy robie to z poziomu mojego programu w Delphi:

procedure TFormMain.Run(Sender: TObject);
var
  FileName, Path: String;
begin
  if ListView.Selected <> nil then
    begin
      FileName := PChar(PAppInfo(ListView.Selected.Data)^.FileName);
      Path := ExtractFilePath(FileName);
      if FileExists(FileName) then
        ShellExecute(Handle, 'open', PChar(FileName), nil, PChar(Path), 1)
      else
        MessageBox(Handle, 'Podczas uruchamiania aplikacji wystąpił błąd - nie znaleziono pliku wykonywalnego programu. Skontaktuj się z administratorem.', PAnsiChar(appTitle), MB_ICONERROR + MB_OK);
    end;
end;

aplikacja odpala sie, ale podczas wczytywania duzej ilosci danych (mapy, podklady rastrowe) pojawia sie blad out of memory. Pytanie brzmi: czym moze sie roznic odpalanie poprzez skrot a poprzez funkcje SellExecute? Moze cos zle robie? Dodam ze odpalam w ten sposob sporo innych aplikacji i nie ma tego problemu. Problem wystepuje na komputerach z Win XP (na Win 2000 nie sprawdzalem). Komputery sa w domenie a aplikacja (ta moja) dodatkowo jest potraktowana UPX-em.

0

Eh Ewmapa : ) czyżby ktoś na forum miał cokolwiek wspólnego z geodezją oprócz mnie ?

A wracając do tematu, sprawdź może czy w skrócie nie ma jakichś dodatkowych parametrów przekazywanych do aplikacji w czasie uruchamiania.
A tak naprawdę to odpalasz skrót, czy exe'ka ? Może spróbuj czy to samo będzie jak odpalisz bezpośrednio exe'ka.

Pozdrawiam

0
b0bik napisał(a)

Eh Ewmapa : ) czyżby ktoś na forum miał cokolwiek wspólnego z geodezją oprócz mnie ?

Hehe, mam tyle wspolnego z geodezja, ze adaministruje siecia w Urzedzie Miasta...

b0bik napisał(a)

A wracając do tematu, sprawdź może czy w skrócie nie ma jakichś dodatkowych parametrów przekazywanych do aplikacji w czasie uruchamiania.
A tak naprawdę to odpalasz skrót, czy exe'ka ? Może spróbuj czy to samo będzie jak odpalisz bezpośrednio exe'ka.

Czy odpale myszka skrot czy bezposrednio exe z katalogu nie ma to znaczenia, bo dziala. Skrot nie ma zadnych dodatkowych parametrow. Aplikacja w delphi uruchamia bezposrednio exe. Jesli ktos ma jakies dodatkowe sugestie bede wdzieczny.

0

Chcialem podzielic sie rozwiazaniem (a raczej obejsciem) problemu. Z poziomu aplikacji Delphi odpalam skrypt VB:

Set wShell = CreateObject("WScript.Shell")
On Error Resume Next
wshRun = wShell.Run("C:\EWMWin8\ewmapa.exe")
If Err.Number <> 0 then
  MsgBox "Podczas uruchamiania aplikacji wystąpił błąd - nie znaleziono pliku wykonywalnego programu. Skontaktuj się z administratorem systemu.", vbCritical, "Błąd"
End If

I dziala jak trzeba. Moze sie komus kiedys przyda.

1 użytkowników online, w tym zalogowanych: 0, gości: 1