Ahoj.
Potřeboval jsem převést větší počet obrázků ve formátu (*.webp) na (*.jpg).
Aplikace mspaint (Malování) to zvládá skvěle. Ale narazil jsem na problém
s kterým si nevím rady. Program je ve VB6 - prosím bez komentáře :-)
Uvedený zdrojový kód je funkční pouze pokud řádek (' Zpožďovací smyčka)
nahradím skutečnou zpožďovací smyčkou (asi 500 ms).
To ale asi není úplně ideální řešení. Dá se to ošetřit jinak ?
Zdrojový kód:
' Spustí aplikaci Malování + načte obrázek typu *.webp (RIFF)
hInst = Shell("c:\windows\system32\mspaint.exe " & Obrazek, 1)
' Zpožďovací smyčka
' Aktivuje aplikaci Malování
AppActivate hInst
' Posloupnost příkazů pro uložení obrázku ve formátu jpg
keybd_event 18, 0, 0, 0 'Press ALT (Aktivace vstupu pro klávesnici)
keybd_event 18, 0, KEYEVENTF_KEYUP, 0 'release ALT
keybd_event 70, 0, 0, 0 'Press F (menu - Soubor)
keybd_event 70, 0, KEYEVENTF_KEYUP, 0 'release F
keybd_event 65, 0, 0, 0 'Press A (Uložit jako)
keybd_event 65, 0, KEYEVENTF_KEYUP, 0 'release A
keybd_event 74, 0, 0, 0 'Press J (Obrázek ve formátu jpg)
keybd_event 74, 0, KEYEVENTF_KEYUP, 0 'release J
keybd_event 13, 0, 0, 0 'Press Enter (Uložit)
keybd_event 13, 0, KEYEVENTF_KEYUP, 0 'release Enter
keybd_event 13, 0, 0, 0 'Press Enter (Potvrdit ztrátu průhlednosti)
keybd_event 13, 0, KEYEVENTF_KEYUP, 0 'release Enter
' Zpožďovací smyčka
' Ukončí program malování
If hInst <> 0 Then
hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0&, hInst)
If hProcess <> 0 Then
GetExitCodeProcess hProcess, exCode
If exCode <> 0 Then
TerminateProcess hProcess, exCode
End If
End If
End If