opening jpeg with shellexecuteA

Dec 17, 2011 at 1:03am
Hi does anyone know how to open a jpeg using shellexecuteA set for "edit".
I can do this but the only problem is that it opens the jpg with the generic
windows "Paint" program when I want to edit with "Gimp" I have jpg file options set for opening with "windows picture and fax viewer" and editing with "Gimp" in files types but still opens with "Paint".
Thanks
Dec 17, 2011 at 1:30am
I do this in GIMP all the time, just right click on your JPG file and then choose properties and then make sure your in the first tab ( General ) and there is a button there that says Change. Choose GIMP and your all set. It will open GIMP anytime you double click the picture. It also should have an option when you right click that will say EDIT WITH GIMP from that point on too.

Another way if you want EDIT specifically to run GIMP only, then you goto your start menu and under Vista and Windows 7 you choose DEFAULT PROGRAMS. Its in there that you choose GIMP and tell it to OPEN JPG files as by default.
Last edited on Dec 17, 2011 at 1:36am
Dec 17, 2011 at 2:21am
yep winwordExonar thats what you do.
But thats not the problem.
the question is how to do this via the app that i have written using shellexecuteA or similar so that
the editing application is the one that I want not the generic one. Also I cant ask everyone to change their image properties.
Is there anyone out there who has knowledge of how to do this progamaticaly.
Dec 17, 2011 at 3:24am
Try executing the verb "edit" and not the verb "open".
Dec 17, 2011 at 6:33am
You better detect if GIMP is installed by looking to registry, then use CreateProcess.
If it is not installed or not registered, shellexecute will fail.
Dec 17, 2011 at 8:45am
Using verb edit already thanks webJose

modoran I am going to use your suggestion, the only reason why I mentioned "gimp" was because
thats the exe that I am testing my app with. The actual user pref exe will come from preference file.
Dec 18, 2011 at 12:58am
using CreateProcess only opens the given exe not the file which needs to be edited any
other suggestions around
Dec 18, 2011 at 2:15am
The exe takes image filename as command line argument. Pass that to CreateProcess.

Dec 18, 2011 at 7:16am
Modoran
tried your way see below.
This will open Gimp but then throws up the 2 "Opening warnings"
I notice that the first warning the path has been truncated to end at the "and".
The second warning shows the path has been truncated at "Desktop" and an
addition partial path has been appended to this,????????

Seem to be on the right track apart from the truncating of the path.
Can you help here as have spent the whole day trying to solve this

If I set the exe to FireFox then it will open and try and search for "and" so the problem is not
with Gimp

CreateProcessA(NULL,"\"C:\\Program Files\\GIMP-2.0\\bin\\gimp-2.6.exe \"C:\\Documents and Settings\\My\\Desktop\\elefant.jpg",NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS ,NULL,"C:\\Documents and Settings\\My\\Desktop\\",&si,&pi);




Opening 'C:\Documents and Settings\My\Desktop\and' failed: No such file or directory


Opening 'C:\Documents and Settings\My\Desktop\Settings\My\Desktop\elefant.jpg' failed: Could not open 'C:\Documents and Settings\My\Desktop\Settings\My\Desktop\elefant.jpg' for reading: No such file or directory
Last edited on Dec 18, 2011 at 7:21am
Dec 18, 2011 at 9:59am
Your second argument is wrong, missing double quote after filename and after gimp exe too. Both must use double quote separate by space.
Try to declare a variable and print it to make sure you got right (if you use CreateProcessW this îs a must, as string must not be constant, but CreateProcessA will work anyway).
Last edited on Dec 18, 2011 at 10:01am
Dec 18, 2011 at 9:16pm
Modoran well done, talk about not being able to see the trees because of the forest.
Onwards to the next problem, lol.
Thanks.
For those that follow this thread in the future heres the working code.


STARTUPINFO si ={0};
PROCESS_INFORMATION pi = {0};
si.cb = sizeof(si);
CreateProcessA(NULL,"\"C:\\Program Files\\GIMP-2.0\\bin\\gimp-2.6.exe\" \"C:\\Documents and Settings\\My\\Desktop\\elefant.jpg\"",NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS ,NULL,NULL,&si,&pi);

CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
Last edited on Dec 19, 2011 at 6:44am
Topic archived. No new replies allowed.