Author Topic: Run MC with parameters to select file in specified folder  (Read 33 times)

Pawel

  • Junior Member
  • **
  • Posts: 41
    • View Profile
I want to run Multi Commander via external application.
This application runs MC and pases 2 parameters. A directory path and file name.
I want to focus on RIGHT panel (for example) and select this file in this directory.
How to do this?

I see Multi Commander support -Autorun parameter that allows to run a script.
Here is my UDC script:

I need to run Multi Commander with specified

##########################################
#Name:SelectMyFile
#Type:function
#ID:3dc58130a89d422c841855e79ab4c6bd
#Desc:File Selection
#Options:Confirm
##########################################

MC.Explorer.Goto PANEL=RIGHT PATH="${param:0}" ItemFocus="${param:1}"



Multi Commander is running with this code (Delphi):
           
MCParams := '-AutoRun="SelectMyFile ' + '""' + DIRECTORY_PATH + '"" ' + '""' + FILE_NAME_WITH_EXT + '"""';
ShellExecute(0, 'open', PChar(PATH_TO_MULTI_COMMANDER), PChar(MCParams), PChar(EmptyStr), SW_SHOWNORMAL);

It should work, but it is not!
What do I do wrong?

-Pawel

total_annihilation00

  • Power Member
  • ****
  • Posts: 197
  • Tech Savant\ Envisioneering
    • View Profile
Will this work ? While I'am not an expert in passing parameters, I had a similar issue when writing a Goto link Target script (no "Sleep()" delay so it didn't execute properly) Try this MultiScript in User-Defined command (should fix your rapid firing issue):
Multicommander MultiScript:
Code: [Select]
    @var $targetPath = ${arg:0};
    @var $targetFile = ${arg:1};
    MC.Explorer.Goto PANEL=RIGHT PATH="{$targetPath}"
    Sleep(1200);
    MC.Explorer.SetItemFocus PANEL=RIGHT ITEM="{$targetFile}"

Also, according to Grok 4.3 AI, it says your current Delphi code quoting is messy and likely breaking the parameter parsing. Use this cleaner version:
Delphi code:
Code: [Select]
MCParams := Format('-AutoRun="SelectMyFile ""%s"" ""%s"""',
                   [DIRECTORY_PATH, FILE_NAME_WITH_EXT]);

ShellExecute(0, 'open', PChar(PATH_TO_MULTI_COMMANDER),
             PChar(MCParams), nil, SW_SHOWNORMAL);

Let me know if it works or might need further tweaking (you get the gist), but I had a prob /w a Goto Link Target script, it wasn't focusing on the Set Item because it was firing too rapidly, adding a sleep and the correct syntax fixed it !
P.S: The MultiCommander MultiScript code I provided is sound, not sure about the Delphi fix though...
« Last Edit: Today at 07:54:48 by total_annihilation00 »
~The World's Deceit Has Raped My Soul, We Melt The Plastic People Down Then We Melt Their Plastic Town~


Pawel

  • Junior Member
  • **
  • Posts: 41
    • View Profile
This MC command line works
MCParams := Format('-AutoRun="SelectFile" "%s" "%s"',  [MCDirectory, MCFileName]);
ShellExecute(0, 'open', PChar(MC_PATH), PChar(MCParams), nil, SW_SHOWNORMAL);

Script (SelectFile) is called.
For now I am not trying to select RIGHT PANEL and select file.
The problem is PARAMETERS. I am passing -AutoRun, and 2 others (Dir path and File name)

But, I have no idea how to display param 0 and param 1 values
This should work - but I got empty strings:

##########################################
#Name:SelectFile
#Type:multiscript
#ID:3dc58130a89d422c841855e79ab4c6bd
#Desc:File Selection
#Options:
##########################################

@var $DirectoryPath = ${param:0};
@var $SelectedFile = ${param:1};

@var $msg0 = "DIR : " + {$DirectoryPath};
@var $msg1 = "FILE : " + {$SelectedFile};

MessageBox("PARAM, $msg0, 0);
MessageBox("PARAM, $msg1, 0);

MessageBox shows empty string... so, the first problem is here... detecting parameters

The problem must be in command line - either MC not support -AutoRun<script> with other parameters or I pass other parameters in wrong way...

-Pawel
   
« Last Edit: Today at 13:20:29 by Pawel »