Solved

Problem with shellexecute ?

Posted on 2004-04-07
18
463 Views
Last Modified: 2010-04-05
Hi guys
I use shellexecute to run another application by my program
this instruction success with most of programs , but it is not work well with games programs ,some times don't do anything and another time give me an error
I want to run any program without any problem .

thanks
0
Comment
Question by:peruzzi
  • 9
  • 8
18 Comments
 
LVL 11

Expert Comment

by:shaneholmes
ID: 10779070
Try this

 function CreateProcessSimple(
  sExecutableFilePath : string )
    : string;
var
  pi: TProcessInformation;
  si: TStartupInfo;
begin
  FillMemory( @si, sizeof( si ), 0 );
  si.cb := sizeof( si );

  CreateProcess(
    Nil,

    // path to the executable file:
    PChar( sExecutableFilePath ),

    Nil, Nil, False,
    NORMAL_PRIORITY_CLASS, Nil, Nil,
    si, pi );

  // "after calling code" such as
  // the code to wait until the
  // process is done should go here

  CloseHandle( pi.hProcess );
  CloseHandle( pi.hThread );
end;


SHane
0
 
LVL 11

Expert Comment

by:shaneholmes
ID: 10779086
sorry,

Then call it like - CreateProcessSimple( 'C:\MyApp.exe' );

Shane
0
 
LVL 5

Accepted Solution

by:
Hypoviax earned 20 total points
ID: 10781186
Just a query shane, why would shellexecute not work? In every instance i've tried to run a program it has worked using code such as

shellexecute(handle,'open',pchar(filepath),'','',sw_show);

Regards,

Hypoviax
0
 

Author Comment

by:peruzzi
ID: 10781702
Hi
Hypoviax, you are right ,its my fault I wrote SW_SHOWNORMAL

thanks for you and thanks for shan
0
 
LVL 11

Expert Comment

by:shaneholmes
ID: 10782670
I dont know, but it looks lke he didn't like your answer either - "B"

<Smile>

Shane
0
 

Author Comment

by:peruzzi
ID: 10785852
sorry shan
but your answer didn't solve my problem
and the bad thing is that the accepted answer didn't work with all applications

I choose the wrong answer to be accepted.

sorry again
0
 
LVL 11

Expert Comment

by:shaneholmes
ID: 10785898
Hmm, what didn't my procedure do?

Could you elaborate more on both Hypoviax's and mine, as to why they didn't work, what you received for any errors, etc.

Shane
0
 

Author Comment

by:peruzzi
ID: 10786024
Hi
your code and Hypoviax's code run the game for part of second and then close without give any error !!!!!

0
 
LVL 11

Expert Comment

by:shaneholmes
ID: 10786104
Is the game a dos game or Windows game?

Shane
0
6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

 
LVL 11

Expert Comment

by:shaneholmes
ID: 10786138
Hey Hypoviax, I guess it doesn't work in every instance.... <SMILE>

"Just a query shane, why would shellexecute not work? In every instance i've tried to run a program it has worked using code such as"

Shane
0
 

Author Comment

by:peruzzi
ID: 10786182
It is windows program like fifa2004
0
 
LVL 11

Expert Comment

by:shaneholmes
ID: 10786317
Well, i have tested my procedure over and over with all kinds of Dos, & windows programs, and it works fine. So does the SHellExecute method of the API. Try it yourself, with some applications on your machine and you will see. There is something else about your program that hasn't been disclosed to us.  

SO its a game like Fifa2002 - you can't tell us what game it is?

Shane
0
 

Author Comment

by:peruzzi
ID: 10806431
Hi guys
I tried to use (winexec function)
it success when I  use opendialog component with this code on the button :

if opendialog1.Execute then
winexec(pchar(opendialog1.FileName),sw_show);

but if I write in the code of button :

winexec(pchar('c:\my game.exe'),sw_show);

the game not work and I see an error message( zsystem defulte output
game release only support packed scenes)

so what you say

I am waiting .............
0
 
LVL 11

Expert Comment

by:shaneholmes
ID: 10806453
Try renaming the Executable (right click choose rename)

from

my game.exe

to

mygame.exe

SHane
0
 

Author Comment

by:peruzzi
ID: 10808654
the problem isn't on space in the exename
because the function do the same wronge with exename don't have space


0
 

Author Comment

by:peruzzi
ID: 10808661
shane , your procedure do the same wronge with the same error message
0
 

Author Comment

by:peruzzi
ID: 10815698
where are you guys

help me
0
 

Author Comment

by:peruzzi
ID: 10821738
Hi guys
stop you search for solution
because I find  where  the problem is

when I try to run the game ,the game start but it try to get its data from the folder of my application
so I use setcurrentdir to go to the folder of game.

I wish you understand me
thanks for your help
0

Featured Post

Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

Join & Write a Comment

A lot of questions regard threads in Delphi.   One of the more specific questions is how to show progress of the thread.   Updating a progressbar from inside a thread is a mistake. A solution to this would be to send a synchronized message to the…
Have you ever had your Delphi form/application just hanging while waiting for data to load? This is the article to read if you want to learn some things about adding threads for data loading in the background. First, I'll setup a general applica…
This tutorial demonstrates a quick way of adding group price to multiple Magento products.
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.

760 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

25 Experts available now in Live!

Get 1:1 Help Now