- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
computer name
I need to build an application in jmp for different users, meaning that different users will have different User Interface.. (it is the same application) I was wondering if is there a way to get user profile? Let say computer name, user name or server name from jmp ? Doing so I can decide which script to open
Tanks
pniel
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: computer name
Here is some JSL that I wrote for getting the username from the system. This worked in JMP 10, running on Windows 7.
dll = Load DLL( "mpr.dll" );
dll << DeclareFunction(
"WNetGetUserA",
Convention( STDCALL ),
Alias ( "GetUserName" ),
Arg( UInt8, "format", input ),
Arg( AnsiString, "username", output ),
Arg( UInt64, "length", update ),
Returns( UInt32 )
);
username = " ";
unlen = length(username);
result = dll << GetUserName(0, username, unlen);
show(username);
dll << UnloadDLL();
First, you need to load the system DLL. I didn't have any luck with Advapi32.dll. But I found what I needed with mpr.dll. Notice I didn't need to specify a path to the DLL since it was on my system path.
dll = Load DLL("mpr.dll");
Next, you need to declare any method that you are going to call in the DLL. The method I want to use is actually called WNetGetUserA(), but by defining an alias, I can simply call it using GetUserName().
dll << DeclareFunction(
"WNetGetUserA",
Convention( STDCALL ),
Alias ( "GetUserName" ),
Arg( UInt8, "format", input ),
Arg( AnsiString, "username", output ),
Arg( UInt64, "length", update ),
Returns( UInt32 )
);
Now I want to define the variables that I am going to pass in as arguments. I create a username and initialize it to blanks. Then I use the length() function in JMP to get the current length of the buffer I just created.
username = " " ;
unlen = length(username);
Now I can call the function. Notice the first argument is input only, so I just use a constant instead of defining a variable. Then the show() command shows my username after making the call.
result = dll << GetUserName(0, username, unlen);
show(username);
Finally, I am done so I clean up.
dll << UnloadDLL();
I hope this works for you. If you come up with a better way, please let us know.
By the way, using loadDLL only works on Windows. It isn't supported on the Mac. For that reason I do a check at the top of my script.
Names Default To Here( 1 );
If( Host is( Mac ),
Print( "Sorry, this script is not supported on Mac." );
Stop();
);
Enjoy,
JohnP
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: computer name
This worked for me to get the current user name on Windows:
uname = Get Environment Variable( "USERNAME" );
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: computer name
On Windose, from the start menu, run, cmd opens a DOS window. From the prompt type "set" for the list of active environmental variables.
Also - right-click on the My COmputer icon on the desktop - sleect Advanced tab environmental variables button near the bottom.
JMP 9 includes the handy function to retrieve any one of these from the environment:
cname = Get Environment Variable( "COMPUTERNAME" );
and one can branch accordingly base on the returned value from there.
Best regards,
-Matt
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: computer name
i am using jmp 8 is there a similar function there that retrieve the computer nam
tanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: computer name
I need to get the computer user name and store it in a column of a datatable.I am using following script -
uname = Get Environment Variable( "COMPUTERNAME" );
dt:user = uname;
where dt is the data table and user is the name of the column.
But I get the following error -
"Cannot set value for the column 'user' because the row number (-1) is not valid."
Can someone pls tell me what is wrong here?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: computer name
You have to tell JMP which row in the data table for column User you want to save the value to.
uname = Get Environment Variable( "COMPUTERNAME" );
dt:user[1] = uname;
The above would save the value of "uname" to row 1 value for column "user"
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: computer name
It works.But what if I have 10 rows and want to have uname ina ll rows?
Do I use a for loop?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: computer name
You can use a For() Loop, or you could do something like the below:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Consumer Preferences.jmp" );
uname = Get Environment Variable( "COMPUTERNAME" );
dt << New Column( "User", character, set each value( uname ) );
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: computer name
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: computer name
This worked for me to get the current user name on Windows:
uname = Get Environment Variable( "USERNAME" );
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: computer name
many thanks
Can someone mark @bswedlove 's reply as a solution.