Prog.Hu

Windows kép és faxmegjelenítő-vel megynyitni egy képet (Delphi)
50

2013-09-09T00:19+01:00
Halixxx
HalixxxProg.Hu
regisztrált tag
Hogy tudom a Windows kép és faxmegjelenítővel megnyitni paraméteresen egy adott képfájlt.
(Shellexecute)
Mutasd a teljes hozzászólást!
Asszem erre is megvan a vátasz(természetesen WinExec-el):
WinExec('rundll32.exe c:\windows\System32\shimgvw.dll ImageView_Fullscreen c:\kép.bmp');
Tudom hogy nem jó a kód, javítsd mint az elöbb!
Mutasd a teljes hozzászólást!

Hello!

procedure TForm1.Button1Click(Sender: TObject);
var
Fajl: 'elérésiút.jpg';
begin
ShellExecute(Application.Handle, PChar('open'), PChar(Fajl), PChar(''), nil, SW_NORMAL);
end;
Mutasd a teljes hozzászólást!
De nekem az a legnagyobb gondom hogy nem tudom a windows kép és faxmegjelenítő exe-jét (a feladatkezelő szerint Explorer.exe)

  ShellExecute(Handle,nil,'explorer.exe',PChar('kép.bmp'),PChar('C:\'),SW_ShowNormal)
mondjuk így, de akkor ez InternetExplorer-t szedi elő ... és nem a képmegjelenítőt.
Mutasd a teljes hozzászólást!
Asszem erre is megvan a vátasz(természetesen WinExec-el):
WinExec('rundll32.exe c:\windows\System32\shimgvw.dll ImageView_Fullscreen c:\kép.bmp');
Tudom hogy nem jó a kód, javítsd mint az elöbb!
Mutasd a teljes hozzászólást!
Ja működik egyszerűbben is:
'rundll32.exe shimgvw.dll ImageView_Fullscreen c:\kép.bmp'
Mutasd a teljes hozzászólást!
Van olyan függvény ami PChar-ból Stringet csinál?
Mutasd a teljes hozzászólást!
Alapból azzal nyitja meg, ha az az alapértelmezett képmegjelenítő.
Mutasd a teljes hozzászólást!
A Delphi helpje azt mondja, hogy:


Long string to PChar conversions are not automatic. Some of the differences between strings and PChars can make conversions problematic:

Long strings are reference-counted, while PChars are not.
Assigning to a string copies the data, while a PChar is a pointer to memory.
Long strings are null-terminated and also contain the length of the string, while PChars are simply null-terminated.

Situations in which these differences can cause subtle errors are discussed in this section.
Mutasd a teljes hozzászólást!
Nekem fogalmam sincs, de mihez kell?
Mutasd a teljes hozzászólást!
hát ezér

  WinExec('rundll32.exe c:\windows\System32\shimgvw.dll ImageView_Fullscreen '+'"'+(P)+'"')
A P az Pchar és a fordítónak nem tetszik.
Mutasd a teljes hozzászólást!
Itt találtam ezt:
S1 := String (PChar (S1));
Mutasd a teljes hozzászólást!
De ha nem jó, akkor sztem használd Mester88 megoldását, azis ugyanúgy működik.
Mutasd a teljes hozzászólást!
Itt a PChar hiba

  WinExec(PCHAR('rundll32.exe c:\windows\System32\shimgvw.dll ImageView_Fullscreen "'+DirectoryListBox1.Directory+'\'+P+'"'),SW_SHOW)

De nem hív meg semmit
-- a P a fájlnév --
Mutasd a teljes hozzászólást!
Sajna nincs fenn Delphim. De különben sima stringgel jó, ugye?
A másik topicba nem PAnsiChar-t írtál? Ugyan úgy kell mind a kettőt megcsinálni.
Mutasd a teljes hozzászólást!
Ha
rundll32.exe c:\windows\System32\shimgvw.dll ImageView_Fullscreen
helyett
mspaint.exe-t írok akkor előszedi a paintot a fájllal
úgyhogy sztem ezekbe a sorokba lehet a probléma
rundll32.exe c:\windows\System32\shimgvw.dll ImageView_Fullscreen
Mutasd a teljes hozzászólást!
Nekem működik. Windows XP Prof.
A win kép és faxmegjelenítő az alapértelmezett?
Megvan neked ez a dll?
Mutasd a teljes hozzászólást!
jaja,megvan a dll
de nem ez az alapértelmezett....
be kéne állítani?
Mutasd a teljes hozzászólást!
Igazábol fogalmam sincs. Ezt a hívást mondjuk a regeditben találtam a file asszociációknál, de sztem működnie kéne akkor is.
Mutasd a teljes hozzászólást!
De ha a konzolba írom be akkor megy...
De delphiben nem...
Mutasd a teljes hozzászólást!
Itt a megoldás
WinExec(PCHAR('rundll32.exe c:\windows\System32\shimgvw.dll ImageView_Fullscreen ' + DirectoryListBox1.Directory + Edit1.Text ),SW_SHOW)
Nem kell neki a " és az +'\'+ se... így megy és a szóközös fájloknál se hibázik.
Mutasd a teljes hozzászólást!

Látod nem kell ide semmilyen PChar konvertálás. Én c#-ban próbáltam ki és ott meg nincs is ilyen.
Az a \ akkor benne van a DirectoryListBox1.Directory-ban vagy az Edit-ben?
Mutasd a teljes hozzászólást!