Focus/open folder for a file in nw.js - node-webkit

I'm working on an app that generates a report, giving you a "View folder" button to view the file within its folder once generated.
What is the best way in nw.js to focus explorer if that folder if open in explorer or open explorer if not?
I know I could open a new explorer window each time with something like
require('child_process').exec('start "" "c:\\MyPath"');
...but I'm not sure that's the best way. (If that's the way to go, I'm passing in a path variable like C:\MyPath and need to figure out how to escape \ as \\ etc. so that start will accept the path variable.)

Don't use child_process, use the method built-in to NW.js: https://nwjs.readthedocs.io/en/latest/References/Shell/#shellshowiteminfolderfile_path

Related

Upload File / Image using Dropzone.js with Selenium-Ide

Hi Everyone
I'm new to selenium, please bear with me, and guide me a little bit.
So I want to make an automation process with selenium-ide, with the hope that this automation will make testing in my project easier.
So using selenium-ide and trying to upload a file using dropzone.js, here is the normal flow.
Click the button 'Add Photo'
Windows explorer will pop up
After the file is selected, on the background, 'dropzone' will manipulate the file while opening a pop up "Image Editor"
After clicking "Confirm" the file will be uploaded to the server.
What I want to accomplish is "How can I manipulate click/select the file after file explorer opened, using selenium-ide? or is it possible?"
I have already spent hours trying to find the solution and have had no luck.
I try using the command "type" or "send key", and also on my discovery we could use javascript directly with the command "execute script", but I just don't know how to make it work
What I expect is, I could manipulate the manual proses of the selection file with automation from selenium-ide.
Thank You.
I got my own answer guys!
My goals above can be solved using selenium-ide command called "type",
Here is the explanation:
Command:
I use "type", according to selenium-ide it will store value to your element.
Target
Dropzone will create its own element 'input file' and it's hidden, of course, so this is one that we should get, instead of your own input file. You may find it with class dz-hidden-input, and since I have many file inputs I use an array at the end of XPath [{$check}]
Value This one is the exact path where you put your file locally.
**The Logic / How it works: **
with this solution, we don't need to trigger file explorer, because the above code will inject the image inside dropzone file input, and since dropzone listens to their file input which is dz-hidden-input, it will act the same way that we choose the file from file explorer.
I hope this answer will help someone whos bumped into the same problem.
Kudos XD

How do I open a file with a specific application rather than its default application?

I am trying to open files using a specified executable; just like as if you were to right mouse click on a file then scroll to "Open with"
I tried what kaymaf said and reviewed the docs, but I cannot seem to get this to work.
Dim FI As New FileInfo(GetFileNameFromListViewItem(ListViewCollection.SelectedItems(0)))
Dim GetExif As Process = System.Diagnostics.Process.Start("C:\Users\*username*\Downloads\exiftool.exe", FI.FullName)
This just ends up open the executable and rather than opening the file with the executable.
You would like to open a file with your program using the Windows context menu; and do you want to get an entry in that menu? If that is not correct, the answer can be deleted.
I found this in a German forum, and they refer to this site:
This is the translated text:
One possibility would be that you register your file extension and your program in the system to open this file extension. As soon as the system knows everything, you only need to right-click on the file(s) and in the context menu, in addition to the standard entries, another menu item for opening these files is displayed. If you select this menu item, your program will start automatically if it has not yet started, and you can read out / determine the path to this file or several files in your program and process it accordingly. How it all works is described here: ookii.org/Blog/opening_files_via_idroptarget_in_net
On this page there is also a sample for download (start text files with your own program via an additional entry in the context menu / display paths to the files). It is not a VB, but it should be translatable without any problems. Corresponding information on the page and the comments should be observed.

VB.NET call desktop application from 2 shortcuts - supply different parameters

I have a desktop application which reads files from a specified folder, then deposits the files to a folder in a third party document management system based on criteria that the user provides.
My question is:
is it possible to somehow provide different parameters to the code, depending on which shortcut of the application the user clicked on to start it up?
You can add command line parameters to a shortcut icon. Here's how you can do it in Windows:
On the Start Menu, navigate to Notepad.
Right click on Notepad and choose Send To > Desktop (Create Shortcut)
Right click on the newly-created desktop icon and choose Properties
Add your command line parameters to the Target text box.
For example, if you want notepad to open up the hosts file, this would be the content of Target property:
%SystemRoot%\system32\notepad.exe "C:\WINDOWS\system32\drivers\etc\hosts"
You can put pretty much anything into the Target property of a shortcut that you would put into a command line.
Yes.
The easiest way would be to have the shortcut pass those parameters in via the command line.
You could also use conditional compilation variables, and have 2 different .exes. You should be able to find samples of both approaches (command line and conditional compilation variable) in help.

Opening the user's home folder?

My XULRunner application has a button named "Show Recordings". Pressing it should result in Windows Explorer opening the folder for the user. How can I achieve this?
I can't find it in the File I/O documentation, perhaps I'm looking in the wrong place.
Edit
The problem is not finding the path, but telling the system to open the folder. I can't seem to find a "openFolder" function.
You're looking for the reveal() method on nsILocalFile.
Do you mean:
%HOMEPATH%
And by that I mean, if you want a global variable to get the current user's home directory path, use %HOMEPATH%. I guess you have to set that button to this value. For a list of Windows environment variables, start at the wiki article.

system.diagnostic.process.start problem

Im trying to create an application launcher using vb.net. I'm trying to launch desktop shortcuts that are hidden because I want my desktop to be free of mess. Those shortcuts are created through nircmd :http://www.nirsoft.net/utils/nircmd.html
I used this code:
System.Diagnostics.Process.Start("E:\Documents and Settings\Rew\Desktop\SpeakClipboard.exe")
And it returned the error that the path specified cannot be found.
I tried launching an application in program files using this method and it worked well.
Is there a problem with shortcuts? I cannot specify the path for the file where the shortcut is linked because its a shortcut in the desktop and doesn't point to anything except the nircmd.exe that is on : F:\NIRCMD
But I also tried using this path for system.diagnostic.process.start:
F:\NIRCMD\nircmd.exe cdrom open g:
But still no luck.
If I understand correctly SpeakClipboard.exe is actually a shortcut? If so it probably has a hidden .lnk extension. So you should specify SpeakClipboard.exe.lnk or SpeakClipboard.lnk if it doesn't actually have .exe in the name.
There is a property on the ProcessStartInfo object that allows you to specify an argument.
eg your command would be "F:\NIRCMD\nircmd.exe" and the arguments would be "cdrom open g:"
Does that work?