tcox8 Posted February 2, 2012 Share Posted February 2, 2012 (edited) Hello all,I am making a simple script that requires me to select the "Remember my credentials" checkbox on the "Windows Security" box that pops up when mapping a network location. This checkbox however does not show up in the Window Info tool like the other controls do.I have read through many posts today trying to figure this out but seems not many people have issues like this. Does anyone have an idea how to get this control ID?Thanks!screenshot: http://imageshack.us/photo/my-images/96/examplerq.png/ Edited February 2, 2012 by tcox8 "There are only 10 types of people in the world: Those who understand binary, and those who don't" Link to comment Share on other sites More sharing options...
chachew Posted February 2, 2012 Share Posted February 2, 2012 Are you just not getting the ID for the control? The CLASSNN can also be used to use the control Link to comment Share on other sites More sharing options...
tcox8 Posted February 2, 2012 Author Share Posted February 2, 2012 Yes i Know about the ClassNN, however there is no info for the checkbox using the windows Info tool. I can get the class, instance, and classnamNN of the 2 edit boxes and 2 buttons but nothing shows up for the checkbox. "There are only 10 types of people in the world: Those who understand binary, and those who don't" Link to comment Share on other sites More sharing options...
Country73 Posted February 2, 2012 Share Posted February 2, 2012 Have you tried: Send ("{TAB}") Send ("{SPACE}") If you try to fail and succeed which have you done?AutoIt Forum Search Link to comment Share on other sites More sharing options...
chachew Posted February 2, 2012 Share Posted February 2, 2012 Yea, i just tried this on a Virtual Machine and the checkbox is not being captured...Have you tried Spy++ ? Link to comment Share on other sites More sharing options...
tcox8 Posted February 2, 2012 Author Share Posted February 2, 2012 Have you tried: Send ("{TAB}") Send ("{SPACE}") I do not prefer this way as it is quite unstable. Yea, i just tried this on a Virtual Machine and the checkbox is not being captured...Have you tried Spy++ ? I have not used this (nor have I heard of it!) I do have access to visual studios so I will have to download it and see if that helps. Thanks for the tip! "There are only 10 types of people in the world: Those who understand binary, and those who don't" Link to comment Share on other sites More sharing options...
chachew Posted February 2, 2012 Share Posted February 2, 2012 Ok, i just tried it with Spy++ with the same result. I think the suggestion Country73 will be your best bet. I know i have had issues with certain windows security popups before when it comes to automation. Im sure you can focus the popup and tab through and select without issue Link to comment Share on other sites More sharing options...
tcox8 Posted February 2, 2012 Author Share Posted February 2, 2012 I appreciate the help! I made do with using ControlSend to tab down. Hopefully that will be more stable "There are only 10 types of people in the world: Those who understand binary, and those who don't" Link to comment Share on other sites More sharing options...
Bert Posted February 2, 2012 Share Posted February 2, 2012 There is a much simpler way to do this. You can use command line to do what you need or look at the AutoIt commands DriveMapAdd, DriveMapGet and DriveMapDel The Vollatran project  My blog: http://www.vollysinterestingshit.com/ Link to comment Share on other sites More sharing options...
tcox8 Posted February 2, 2012 Author Share Posted February 2, 2012 Yes this would work on a normal network location, however I am mapping to a print queue. I tried the DriveMapAdd and it did not work. "There are only 10 types of people in the world: Those who understand binary, and those who don't" Link to comment Share on other sites More sharing options...
Bert Posted February 2, 2012 Share Posted February 2, 2012 (edited) You don't use DriveMapAdd for that. Is this for Novell Print queues or Windows shared printers? If for windows I have an old script that may help. IT will need to be tweaked a bit to run correctly (I haven't ran it in a LONG time) but the core of it shows you how to map printers via command line. expandcollapse popup#cs Network Printer Utility 1.0 beta Designed by the CTS Script team July 2006 A big THANK YOU goes to big_daddy. His help was invaluable in fixing some issues. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ History July 2006: Initial release. --------------- Known issues: Will not work on Novell servers. #ce #include <GuiConstants.au3> #include <WindowsConstants.au3> #include <Process.au3> #include <Array.au3> $g_szVersion = "PrintInst.exe" If WinExists($g_szVersion) Then Exit Opt("TrayIconDebug", 1) ;debug is on Dim $hService, _ $data, _ $sPrinter, _ $sPrinterList, _ $font = "Comic Sans MS", _ $Input[12], $Combo[7], $radio[7], _ $check[11], $Button[6] Global Enum Step + 25 _ $CON_POS_1 = 25, _ $CON_POS_2, _ $CON_POS_3, _ $CON_POS_4, _ $CON_POS_5, _ $CON_POS_6, _ $CON_POS_7, _ $CON_POS_8, _ $CON_POS_9, _ $CON_POS_10, _ $CON_POS_11 GUICreate("", 600, 290, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS)) GUICtrlCreateLabel("", 20, 54, 10, 20) $iniread_1 = IniRead(@ScriptDir & "/npu.ini", "SERVER", "SERVER", "") $iniread_2 = IniRead(@ScriptDir & "/npu.ini", "Printers", "PLIST", "") iniwrite(@ScriptDir & "/npu.ini", "Printers", "LOCAL", "") $iniread_3 = IniRead(@ScriptDir & "/npu.ini", "Printers", "LOCAL", "") $LocalPrinters = StringSplit($iniread_3, "|") If $LocalPrinters[0] > 10 Then ReDim $LocalPrinters[11] EndIf $Input[1] = GUICtrlCreateInput($iniread_1, 35, 50, 100, 20) For $i = 2 To 11 $Input[$i] = GUICtrlCreateInput("", 270, Eval("CON_POS_" & $i - 1), 270, 21) If ($i - 1) <= $LocalPrinters[0]Then GUICtrlSetData(-1, $LocalPrinters[$i - 1]) EndIf Next For $i = 1 To 6 $Combo[$i] = GUICtrlCreateCombo("", 20, Eval("CON_POS_" & $i + 2), 170, 21) GUICtrlSetData(-1, $iniread_2) $radio[$i] = GUICtrlCreateRadio("", 210, Eval("CON_POS_" & $i + 2), 15, 21) Next For $i = 1 To 10 $check[$i] = GUICtrlCreateCheckbox("", 550, Eval("CON_POS_" & $i), 20, 20) Next GUICtrlCreateLabel("Currently install printers", 270, 3, 200, 21) GUICtrlCreateLabel("Delete", 550, 7, 100, 21) GUICtrlCreateGroup("Default", 200, 62, 50, 160) $Button[1] = GUICtrlCreateButton("Run", 20, 225, 35, 30) $Button[2] = GUICtrlCreateButton("Exit", 65, 225, 35, 30) $Button[3] = GUICtrlCreateButton("Find", 146, 50, 43, 20) $Button[4] = GUICtrlCreateButton("Find", 498, 3, 43, 20) $Button[5] = GUICtrlCreateButton("Restart Spooler", 110, 225, 80, 30) $Label_1 = GUICtrlCreateLabel(" Network Printer Utility" & @CRLF & "for Windows Print Servers", 20, 0, 240, 50) GUICtrlSetFont(-1, 10, 400, "", $font) $Label_2 = GUICtrlCreateLabel("2006 CTS Scripting Team", 40, 270, 130, 25) $_dummy = GUICtrlCreateDummy() GUISetState() While 1 $msg = GUIGetMsg() Switch $msg Case $GUI_EVENT_CLOSE ExitLoop Case $Button[1] _Rprinter() _instprint() MsgBox(0, "", "Done!", 3) Case $Button[2] ExitLoop Case $Button[3] $data = GUICtrlRead($Input[1], 0) _netprint1() Case $Button[4] _getinstalledPrinters() Case $Button[5] _restart() Case Else ;;; EndSwitch WEnd Exit Func _netprint1() $hService = ObjGet("winmgmts:{impersonationLevel=impersonate}!" & "" & $data & "rootcimv2") If @error Then MsgBox(48, "ERROR", "No Printers Found. Possible issues: " & @CRLF _ & "" & @CRLF _ & " 1. The Windows Print Server name has been entered in incorrectly." & @CRLF _ & " 2. You are trying to access a Novell Server. This utility does not support Novell Print Servers." & @CRLF _ & " 3. There are no printers shared on the Windows Print Server you selected.") Else _np2() EndIf EndFunc ;==>_netprint1 Func _np2() Local $i = 0 Local $sPrinters = "" Local $aArray[1] SplashTextOn("", "Gathering printers, please wait...", 150, 75) For $y = 1 To 6 GUICtrlSetData($Combo[$y], "") Next IniWrite(@ScriptDir & "/npu.ini", "Printers", "PLIST", "") $oPrinterList = $hService.ExecQuery ("Select * From Win32_Printer") For $oPrinter In $oPrinterList ReDim $aArray[$i + 1] $aArray[$i] = StringUpper($oPrinter.name) $i += 1 Next _ArraySort($aArray) For $i = 0 To UBound($aArray)-1 For $y = 1 To 6 GUICtrlSetData($Combo[$y], $aArray[$i]) Next Next $iElements = UBound($aArray) - 1 For $x = 0 To $iElements If $x = $iElements Then $sPrinters &= $aArray[$x] Else $sPrinters &= $aArray[$x] & "|" EndIf Next IniWrite(@ScriptDir & "/npu.ini", "Printers", "PLIST", $sPrinters) $dataget2 = GUICtrlRead($Input[1], 0) IniWrite(@ScriptDir & "/npu.ini", "SERVER", "SERVER", $dataget2) SplashTextOn("", "Select what printers you wish to install", 150, 75) Sleep(2000) SplashOff() EndFunc ;==>_np2 Func _instprint() Local $ComboGet[7], $RadioGet[7] SplashTextOn("", "Installing printer, please wait...", 150, 75) $InputGet = GUICtrlRead($Input[1], 0) For $i = 1 To 6 $ComboGet[$i] = GUICtrlRead($Combo[$i], 0) $RadioGet[$i] = GUICtrlRead($radio[$i], 0) Next For $i = 1 To 6 If $ComboGet[$i] <> "" Then RunWait(@SystemDir & "RUNDLL32 PRINTUI.DLL,PrintUIEntry /ga /c" & @ComputerName & " /n" & $InputGet & "" & $ComboGet[$i]) EndIf Next _RunDOS("NET STOP spooler") _RunDOS("NET START spooler") sleep(10000) For $i = 1 To 6 If $RadioGet[$i] = 1 Then If $ComboGet[$i] <> "" Then RunWait(@SystemDir & "RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n"&$iniread_1&""& $ComboGet[$i]) endif EndIf GUICtrlSetData($Combo[$i],"") GUICtrlSetState($radio[$i], $GUI_UNCHECKED) sleep(50) GUICtrlSetData($Combo[$i],$iniread_2) Next SplashOff() EndFunc ;==>_instprint func _restart() SplashTextOn("", "Stopping Print Spooler, please wait...", 150, 75) _RunDOS("NET STOP spooler") SplashOff() SplashTextOn("", "Starting Print Spooler, please wait...", 150, 75) _RunDOS("NET START spooler") SplashOff() EndFunc Func _getinstalledPrinters() SplashTextOn("", "Gathering installed printers, please wait...", 200, 75) IniWrite(@ScriptDir & "/npu.ini", "Printers", "LOCAL", "") $hService = ObjGet("winmgmts:{impersonationLevel=impersonate}!" & "" & @ComputerName & "rootcimv2") $sPrinterList = $hService.ExecQuery ("Select * From Win32_Printer") ConsoleWrite('$sPrinterList.count = ' & $sPrinterList.count & @LF) For $sPrinter In $sPrinterList ConsoleWrite('$sPrinter.name = ' & $sPrinter.name & @LF) $rd3 = IniRead(@ScriptDir & "/npu.ini", "Printers", "LOCAL", "") IniWrite(@ScriptDir & "/npu.ini", "Printers", "LOCAL", $rd3 & $sPrinter.name & "|") Next $local = StringSplit(IniRead(@ScriptDir & "/npu.ini", "Printers", "LOCAL", ""), "|") If UBound($local) < 11 Then ReDim $local[11] For $i = 1 To 10 GUICtrlSetData($Input[$i + 1], $local[$i]) Next SplashOff() EndFunc ;==>_getinstalledPrinters Func _Rprinter() Local $InputGet[11] For $i = 2 To 11 $InputGet[$i - 1] = GUICtrlRead($Input[$i]) Next For $i = 1 To 10 If GUICtrlRead($check[$i]) = 1 Then SplashTextOn("", "Removing printer, please wait...", 150, 50) GUICtrlSetState($check[$i], $GUI_UNCHECKED) sleep(1000) If $InputGet[$i] <> "" Then $str = StringLeft($InputGet[$i], 2) If $str = "" Then RunWait(@SystemDir & "RUNDLL32 PRINTUI.DLL,PrintUIEntry /gd /dn /n /c" & @ComputerName & " /n" & $InputGet[$i]) ;RunWait(@SystemDir & "RUNDLL32 PRINTUI.DLL,PrintUIEntry /gd /q /c" & @ComputerName & " /n" & $InputGet[$i]) ;mine original ;RunWait(@ComSpec & ' /c RUNDLL32 PRINTUI.DLL,PrintUIEntry /gd /dn /q /n "' & $ret & '"', '', @SW_HIDE) ;danny35 GUICtrlSetData($InputGet[$i], "") Else RunWait(@SystemDir & 'RUNDLL32 PRINTUI.DLL,PrintUIEntry /dl /q /n "' & $InputGet[$i] & '" /c' & @ComputerName) EndIf EndIf EndIf Next EndFunc ;==>_Rprinter ;#cs - printer install ;adds a printer ;Run(@SystemDir & "RUNDLL32 PRINTUI.DLL,PrintUIEntry /ga /c" &@ComputerName& " /nva017f1a19_4200_82.248_PCL") ;&&&& ;deletes a printer ;Run(@SystemDir & "RUNDLL32 PRINTUI.DLL,PrintUIEntry /gd /c" [email="&@ComputerName"]&@ComputerName[/email]& " /nva017f1a19_4200_82.248_PCL") ;_rundos("NET STOP spooler") ;_rundos("NET START spooler") ; #ce Edited February 2, 2012 by MPH The Vollatran project  My blog: http://www.vollysinterestingshit.com/ Link to comment Share on other sites More sharing options...
tcox8 Posted February 3, 2012 Author Share Posted February 3, 2012 Hmm, I played around with PrintUI.dll before but I am unable to get it to map the printer with the network logon credentials that are required. "There are only 10 types of people in the world: Those who understand binary, and those who don't" Link to comment Share on other sites More sharing options...
tcox8 Posted February 3, 2012 Author Share Posted February 3, 2012 Just FYI to anyone needing this: I just bypassed the credentials box by forcing the credentials into the credential manager first using "cmdkey.exe" After that I was able to use "Start serverprinter" to add the networked printer without the need to enter the credentials. Works very well for what I need it to. Thanks everyone! "There are only 10 types of people in the world: Those who understand binary, and those who don't" Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now