Můžu potvrdit, že instance, která otevírá soubor by měla předat
požadavek na otevření souboru instanci, která běží.

Ale teď mě napadá možný důvod, proč to nefunguje.
PSPad si předává tyto informace zasláním klasické zprávy WM_COPYDATA a v
registru kontroluje, zda běžící instance je v pořádku (již se
nastartovala), tato informace je  ve větvi HKCU.
V případě že si spusím jinou instanci jako admin, nesahá náhodou ta
druhá instance do registru admina? Je schopná pomocí zpráv komunikovat s
první instancí, která běží pod jiným uživatelem?

Vysvětlení proč je to takto řešeno (neznamená to, že by to nešlo změnit
nebo udělat jinak).
Pokud se spustí poprvé jakýkoliv program přes Windows Explorer, ve kterém
je označeno např. 10 souborů, stane se následující:
- Windows spustí 10 instancí programu a kažé předá jeden soubor
- Start PSPadu trvá nějakou dobu, takže se musí vypořádat se stavem, kdy
první instance ještě není schopna zpracovávat zprávy a ostatní instance
jí už zprávy posílají - došlo by k situaci, že by se neotevřely všechny
předané soubory (viz historie PSPadu)
- první instance PSPadu (kromě vytvoření MUTEX) zapíše do registru svůj
handle a stav, že startuje. Ostatní podle MUTEXu zjistí, že již nějaká
instance běží, z registru si zjistí handle (na ten pošlou zprávu) a
počkají, až se v registru objeví stav, že první instance je již
připravena

Pokud by nebylo toto "hovadské" chování Exploreru a soubory by byly předány
jedné instanci jako několik parametrů (stejně jako funkce Odeslat / PSPad v
Exloreru), bylo by vše mnohem jednodušší...

-- 
<http://forum.pspad.com/read.php?1,36498,38365>
PSPad freeware editor http://www.pspad.com

Odpovedet emailem