parametr z aplikacji do aplikacji

0

chcę obsłużyć domyślną komendę otwórz dla logów mojego programu. chcę jednak, aby przy zaznaczeniu kilku, otwierały się (jeśli tak ustawiono opcję) w jednej instancji. mam do wyboru następujące (o tylu wiem) możliwości:

1)przez serwer rozszerzający dynamicznie tworzyć domyślne pole akcji
(nie mam pojęcia jak się domyślne tworzy)
2)skojarzyć plik z programem, a następnie podczas tworzenia menu przechwycić domyślną akcje (chyba się tak da, ale patrz wyżej - nie wiem jak)

najbardziej przystępna wydaje mi się takie wyjście:

z shella uruchamiam program z plikiem jako parametr
program.exe -filename

w kodzie programu, przed pokazaniem się formy, sprawdzam czy program nie jest już uruchomiony, a jeśli tak, to przekazyję do niego ten plik, znaczy się nazwę.
i tego ostatniego właśnie nie wiem jak zrobić. jakie zdarzenie mam obsłużyć żeby program wiedział że jakiś inny chce mu przekazać nazwę pliku ?

0

juz kiedys bylo na 4p. o przekazywaniu danych miedzy procesami.
poszukaj.

0

dzięki, znalazłem, mam. po prostu nie wiedziałem pod jakim hasłem szukać, nie słyszałem wcześniej o IPC czy inter-process communication..

jedyny problem jaki teraz mam to to, że (aczkolwiek nie wiem czy to główny i w ogóle powód) mój program zajmuje prawie 2MB, (po spakowaniu do 0.6 i tak jest to samo), i chociaż komunikacja klientów z serwerem IPC odbywa się w *.dpr przed utworzeniem jakiejkolwiek formy, to przekierowanie w ten sposób około 100 plików zajmuje 25 sekund !!!
czy utworzenie dodatkowego małego programu który będzie się tym zajmował poprzez jeszcze jeden serwer IPC (ładował dla każdego pliku i przesyłał go do jednej głównej instancji aplikacji-matki), rozwiąże ten problem ? czy może trzeba inaczej ? czy też w ogóle ten sposób już taki jest i basta ?

[EDIT]
w takim razie pozostaje się zainteresować dokładnie pozycją drugą z pierwszego posta :) ...

0

Ja bym po prostu zapisywał do jakiegoś pliku, a potem ewentualnie kasował go.

0
Ad napisał(a)

Ja bym po prostu zapisywał do jakiegoś pliku, a potem ewentualnie kasował go.

o rany straszna metoda, śmietnikowa :P
po pierwsze, skąd będę wiedział że to już koniec i mogę czytać z pliku-listy ?

po drugie...to ja już wszystko wiem :D

pozycje domyślną kontext menu utworzymy tak:

mii:MENUITEMINFO;

          mii.fMask:=[...] or MIIM_STATE;
          mii.fState:=MFS_DEFAULT;

a żeby działało po dwukliku, czy po przywaleniu enterem, trzeba dodać taki klucz do rejestru:
HKCR\CLSID\'{CLSID}'\ShellEx\MayChangeDefaultMenu

i działa [diabel]

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