Witam
Mam pytanie. W programiku używam ShellExecute do otwierania plików przechowywanych w bazie. Wszystko było OK, aż tu dzisiaj próbuje kliknąć na załączniku w postaci pliku *.eml i zonk - nic. Uruchamia się proces Outlook Express (msimn.exe) i wisi, obciąża CPU w 90% i nic. Dwukrotne kliknięcie spod Explolera otwiera normalnie okno wiadomości w Outlook'u, a przez ShellExecute nie idzie. Po dwukrotnym kliknięciu na pliku, nie trzeba nic wybierać, wpisywać żadnego hasła ani nic.
Kodzik wygląda tak:
var wynik : integer;
begin
wynik := ShellExecute(Application.Handle, 'open', pchar(NazwaDokumentu),'' ,'', SW_SHOWDEFAULT);
If Wynik=SE_ERR_NOASSOC then
ShowMessage('Nie ma żadnego programu skojarzonego z takim typem pliku!');
else
If wynik<=32 then
ShowMessage('Próba otwarcia pliku zakończyła się niepowodzeniem!');
Wynik ustawia się na 42, w helpie pisze że poniżej 32 jest problem, inaczej to uchwyt do programu który się odpalił.
Nie wiem co jest grane. Restartowałem kompa, próbowałem inne załączniki typu eml - też lipa. Załączniki w tylu doc, xls, txt otwierają się bez problemu. Cała procedura działała, i nic przy niej nie było zmieniane : ( W konfiguracji OE też nic nie grzebałem. Nazwa pliku ma około 90 znaków i oczywiście ma rozszerzenie 'eml'. Po ubiciu wszystkich procesów 'msimn.exe' i ponownie wywołaniu funkcji to samo.
Jedyne co pomaga, to jak jest uruchomiony normalnie Outlook Express to się wtedy otwiera tak jak trzeba przez ShellExecute.
Ma ktoś jakieś pomysły, bo mi już brakło : ( ?
Chyba żeby sprawdzać czy to jest eml i odpalać jakoś otulook'a z parametrem ... no nie wiem
// dopisane
Podanie jako lpDirectory PChar(ExtractFilePath(NazwaDokumentu)) też nic nie pomogło : (
// dopisane
If lpFile specifies a document file, nShowCmd should be zero. <= to też nie pomaga