Is there a way to hide a cmd window in Clarion 8?
I run xcopy to copy files defined in fields an application so it looks something like this:
Run('Xcopy '&Clip(Loc:Pathfrom)&' '&loc:Pathto')
i.e. Run(' C:\Temp\Temp.tps c:\Bakup\')
.
Maybe there is a cmd or Clarion command not to show the black window but only do the copying?
Unless there is some reason that you prefer to use the command line copy/xcopy command, why not just use Clarion's built in Copy function to copy the file?
I understand why you don't want to use the builtin COPY command as you should need to find every single file (and possibly folder too) under that folder you want to copy. If I were you I'll use the proper tools to do it: Windows API and hide the window.
This code has not been tested.
Perhaps using the CreateProcess API function with the
CREATE_NO_WINDOW
flag is another way to do this?You should be able to locate some examples in Clarion code around the place. A good starting point is the
CreateProcessCaptureOutput
method ofCML_System_IO_CaptureStdOutput.clw
found in the ClarionMagLibrary:https://github.com/devroadmaps/ClarionMagLibrary/tree/master/libsrc
Tweak that as needed?
No. Using the Clarion
RUN()
function with a console application likexcopy.exe
, it isn't possible to hide the command line interface window using the documented options.Example Clarion program:
However, One way to workaround this is to use a non-console application to do the work, or to simply run the console app with the command line interface hidden. I have done the latter with AutoIT. Just as Clarion offers a
Run()
function, so does AutoIT, but with the additional ability to hide the window.AutoIT script (runhidden.au3 compiled as runhidden.exe):
Example Clarion program which uses the compiled AutoIT script above:
You need not use AutoIT for the above technique, but AutoIT is free and easy to use.