Multi Commander > Support and Feedback
Run MC with parameters to select file in specified folder
(1/1)
Pawel:
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:
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: --- @var $targetPath = ${arg:0};
@var $targetFile = ${arg:1};
MC.Explorer.Goto PANEL=RIGHT PATH="{$targetPath}"
Sleep(1200);
MC.Explorer.SetItemFocus PANEL=RIGHT ITEM="{$targetFile}"
--- End code ---
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: ---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);
--- End code ---
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...
Pawel:
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
Pawel:
My current code:
MCParams := '-AutoRun="SelectFile"';
ShellExecute(0, 'open', PChar(MC_PATH), PChar(MCParams), nil, SW_SHOWNORMAL);
##########################################
#Name:SelectFile
#Type:multiscript
#ID:3dc58130a89d422c841855e79ab4c6bd
#Desc:File Selection
#Options:
##########################################
@var $TmpPath = TranslateEnvString("%temp%") + "\MC_PARAM.tmp";
@var $FileContent;
@var $DirectoryPath;
@var $SelectedFile;
if(FileExists($TmpPath) == 1)
{
$FileContent = LoadStringFromFile($TmpPath);
@var $Lines = StrSplit($FileContent, "\r\n");
$DirectoryPath = $Lines[0];
$SelectedFile = $Lines[1];
DeleteFile($TmpPath, "NODIALOG, SILENT, NOPROGRESS");
#@var $text = "TEMP: " + $TmpPath + "\n" + "DIR: " + $DirectoryPath + "\n" + "FILE: " + $SelectedFile;
#MessageBox("PARAMS", $text, 0);
MC.SetActivePanel PANEL=RIGHT
MC.Explorer.Goto PATH="{$DirectoryPath}"
MC.Explorer.SetItemFocus ITEM="{$SelectedFile}"
}
else
{
MessageBox("Error!", "Parameters not found!", 0);
}
So, I run MC with autorun parameter and save into temp a file with directory path and file name.
Script is reading this temp file, deleting it and set right panel with our directory path.
STILL selecting a file NOT WORKING!
Edit: Sometimes works, when adding Sleep() and SetSourceSelected(). But it depends on machine load... sometimes MC have no time to refresh list of files in panel, or something...
Sleep(1500);
MC.Explorer.SetItemFocus ITEM="{$SelectedFile}"
@var $arr[] = {$SelectedFile};
SetSourceSelected($arr, 1);
But, there must be better way... @Mathias (Author) ?
-Pawel
Pawel:
Anyone has better way to open MC and select given file in specified panel?
Navigation
[0] Message Index
Go to full version