satanico64 Posted February 5, 2018 Share Posted February 5, 2018 hi guys, What is the difference between run and shellexecute ? I have a program which call another exe file. And it works since many years with run command. $path = "d:\barre.exe" $path &= " Lanceur" ; A parameter for the exe. Run($path, @TempDir, @SW_MAXIMIZE) ; If @error Then consolewrite("erreur de lancement de " & $path & " erreur:" & @error & " @TempDir: " & @TempDir & @CRLF) shellExecute("d:\barre.exe" , "Lanceur") If @error Then consolewrite("erreur de lanceemnt de ShellExecute" & $path & " erreur:" & @error & @CRLF) EndIf endif Today, for only one user, (on near 150 / 200) the program called doesn't start at all. The run command is on error, so i tried with shellexecute and it works well. My main program is launch by many users, it select and find the binary for the second program, copy it on the user computer, and run it locally (d:\barre.exe). It works well since a very long time. Barre.exe is a toolbar, so with a gui. I really don't explain this problem. the folder where is the program is accessible for the user, with full rights, and @tempdir is ok too. Any ideas ? Thanks, Nicolas Link to comment Share on other sites More sharing options...
Earthshine Posted February 5, 2018 Share Posted February 5, 2018 My resources are limited. You must ask the right questions Link to comment Share on other sites More sharing options...
satanico64 Posted February 5, 2018 Author Share Posted February 5, 2018 ok thanks, and why do you think run doesn't work ? Link to comment Share on other sites More sharing options...
Earthshine Posted February 5, 2018 Share Posted February 5, 2018 run should return a PID, what is the return code? My resources are limited. You must ask the right questions Link to comment Share on other sites More sharing options...
satanico64 Posted February 5, 2018 Author Share Posted February 5, 2018 return @error = 1 Link to comment Share on other sites More sharing options...
Earthshine Posted February 5, 2018 Share Posted February 5, 2018 (edited) maybe on some boxes they need the run to be executed like this Run(@ComSpec & " /c " & 'commandName', "", @SW_HIDE) ; don't forget " " before "/c" Also, maybe a permissions issue? did you try #RequireAdmin directive? Edited February 5, 2018 by Earthshine My resources are limited. You must ask the right questions Link to comment Share on other sites More sharing options...
satanico64 Posted February 5, 2018 Author Share Posted February 5, 2018 none permission are required. (users doesn't have admin rights). My only user who has the problem has ended his working day, i'll try other things tomorrow Even if it works, with /c, it won't explain why it happens. Link to comment Share on other sites More sharing options...
Earthshine Posted February 5, 2018 Share Posted February 5, 2018 I'm not the developer and cannot debug it. Just fine a workaround is all you can do. My resources are limited. You must ask the right questions Link to comment Share on other sites More sharing options...
satanico64 Posted February 5, 2018 Author Share Posted February 5, 2018 i don't thing, debug is done. run command does'nt work with good parameters which works on shell execute. So i ask the community on the possible cause of that. Workaround is even done. I need to understand now. Link to comment Share on other sites More sharing options...
Earthshine Posted February 5, 2018 Share Posted February 5, 2018 (edited) PM the developers I guess. Edited February 5, 2018 by Earthshine My resources are limited. You must ask the right questions Link to comment Share on other sites More sharing options...
satanico64 Posted February 5, 2018 Author Share Posted February 5, 2018 i still got patience to wait a little Link to comment Share on other sites More sharing options...
Earthshine Posted February 5, 2018 Share Posted February 5, 2018 I just tested a run of notepad on a fake tempdir, and it does what yours does. so, maybe on that particular machine the temp folder is not what you think it is? My resources are limited. You must ask the right questions Link to comment Share on other sites More sharing options...
satanico64 Posted February 5, 2018 Author Share Posted February 5, 2018 i have displayed it in the code in case of error, it is ok and tested on the user computer It's not the problem. Link to comment Share on other sites More sharing options...
Earthshine Posted February 5, 2018 Share Posted February 5, 2018 (edited) yes, I see, but it still fails on ONE computer, right? on THAT computer, the TEMP may not be what you expecting. in your call to ShellExecute you don't specify a WORKING DIR trying to get a reason for the failure and testing like your code to verify results. Edited February 5, 2018 by Earthshine My resources are limited. You must ask the right questions Link to comment Share on other sites More sharing options...
Earthshine Posted February 5, 2018 Share Posted February 5, 2018 I bet that users TEMP and TMP environment variable are not correct or invalid. My resources are limited. You must ask the right questions Link to comment Share on other sites More sharing options...
satanico64 Posted February 5, 2018 Author Share Posted February 5, 2018 nope, i checked the log, look at the temp folder in the console, tested it. This on the user computer. Physically. The temp folder is ok. Tomorrow, i'll try others thing, as run without parameter. Run without tempdir. Link to comment Share on other sites More sharing options...
Earthshine Posted February 5, 2018 Share Posted February 5, 2018 (edited) ok. i just made my TEMP and TMP variable junk and get the same results you do running just notepad in the code. When the workingingdir is left blank, it works. that's all I've got right now. Is his TEMP dir full?!? hmmmm, maybe he needs a Chkdsk /f running without tempdir works in all my tests so far. his disk might me messed up dude. Edited February 5, 2018 by Earthshine My resources are limited. You must ask the right questions Link to comment Share on other sites More sharing options...
satanico64 Posted February 21, 2018 Author Share Posted February 21, 2018 So the answer to my problem after severals tests: My exe file is stored locally in Global $DossierBarreSTC = EnvGet("USERPROFILE") & "\Mes Documents\programme\" I had not precised this in my firsts post but finally it's the root cause. On this computer, it's ok with EnvGet("USERPROFILE") & "\Documents\programme\" but not using 'Mes Documents'. In windows explorer, cmd etc 'Mes document's is well known. And even if i test fileexist in the code before the 'run', the file exists with both paths. About 300 users, only one in this case. Code ok $DossierBarreSTC = EnvGet("USERPROFILE") & "\Documents\programme\" $path = $DossierBarreSTC & "binaires\barre stc.exe" $path &= " Lanceur" ; parameter $pid = Run($path, @TempDir, @SW_MAXIMIZE) Code Not ok: $DossierBarreSTC = EnvGet("USERPROFILE") & "\Mes Documents\programme\" $path = $DossierBarreSTC & "binaires\barre stc.exe" $path &= " Lanceur" ; parameter $pid = Run($path, @TempDir, @SW_MAXIMIZE) So, the problem is solved. i have not totally understood why for this user but i bypassed it. Thanks all. Link to comment Share on other sites More sharing options...
BrewManNH Posted February 21, 2018 Share Posted February 21, 2018 You could just use the macro @MyDocumentsDir to get the location of the current user's my documents folder location regardless of what it's named or where it's located. For example on my work laptop I have moved the location of the Documents folder to my OneDrive folder so it gets backed up automatically, and you won't find it under my user profile in the usual place. If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator Link to comment Share on other sites More sharing options...
satanico64 Posted February 21, 2018 Author Share Posted February 21, 2018 yes, obviously, i didn't knew that macro at the time of the script thanks for the tip Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now