Jump to content
Sign in to follow this  
jyacoe

DriveMapAdd & DriveMapDel Bug

Recommended Posts

jyacoe

I wrote a very simple utility for a client that has multiple locations with databases for a single program. It allows them to choose which location they are at and it remaps the T: drive for them. In case it may be relevant, they are all windows 7 64bit computers using local accounts (non-domain).

Here is an excerpt of the script that is causing me problems:

DriveMapDel("T:")

Sleep(100)

DriveMapAdd("T:", "\\10.0.1.10\SHARE", 1, "administrator", "password")

DriveMapDel("T:")

Sleep(100)

DriveMapAdd("T:", "\\10.0.2.20\SHARE2", 1, "administrator", "password2")

The problem I am having appears to be more "cosmetic" than problematic.

After connecting to one of the offices, then running the program a second time to select another office the share is changed, but the name of the share stays the same. Meaning if you connect to "\\10.0.1.10\SHARE", that is the name displayed in Windows Explorer and the share you are connected to. If you run the program a second time to select another office "\\10.0.2.20\SHARE2" the connection changes to the 10.0.2.20 share, but the name in Windows Explorer remains "\\10.0.1.10\SHARE". Again, so far this doesn't appear to actually cause problems, but if I need to troubleshoot problems and I can't tell which share they are connected to it may create problems.

I have also tried changing the flag to 0 for both DriveMapAdd functions. Any feedback or suggestions would be appreciated.

Jesse

Share this post


Link to post
Share on other sites
JLogan3o13

You're not giving it long enough of a sleep. I reproduced your code, and moving from Sleep(100) to Sleep(1000) resolved the issue. I would suggest start at 1000 and then move down until you find a happy medium.

Edit: Even at 250 it is working just fine for me.

Edited by JLogan3o13
  • Like 1

√-1 2^3 ∑ π, and it was delicious!

Share this post


Link to post
Share on other sites
jyacoe

Excellent! Thanks for the help and the quick reply. Not being a programmer myself its amazing how easy it is to overlook something so simple. Thanks again.

Share this post


Link to post
Share on other sites
JLogan3o13

Glad we could help :)


√-1 2^3 ∑ π, and it was delicious!

Share this post


Link to post
Share on other sites
guinness

I would do this, instead of hard-coding a sleep value. This will loop until T: no longer exists OR the timer is reached, which is 500ms.

#include <Constants.au3>

DriveMapDel('T:')
Local $hTimer = TimerInit()
Do
    Sleep(10)
Until FileExists('T:\') = 0 Or TimerDiff($hTimer) >= 500
If FileExists('T:\') Then
    MsgBox($MB_SYSTEMMODAL, '', 'An error occurred, T:\ wasn''t dismounted.')
Else
    DriveMapAdd('T:', '\\10.0.1.10\SHARE', 1, 'administrator', 'password')
EndIf

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites
jdelaney

You can probably do a loop until the drive is deleted:

$bAdded = DriveMapAdd("L:", \\blahblahblah, 1, "user", "pass")
If $bAdded Then
ConsoleWrite(DriveMapGet("L:") & @CRLF)
If DriveMapDel("L:") Then
While StringLen(DriveMapGet("L:")) > 0
ConsoleWrite("still exists" & @CRLF)
WEnd
Else
MsgBox(1, 1, "not able to perform DriveMapDel()")
EndIf
Else
MsgBox(1, 1, "not able to add mapping")
EndIf

edit: beat to the punch :) ...also, i really like that use of timerdif...i was always itterating a counter till a max value

Edited by jdelaney

IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.

Share this post


Link to post
Share on other sites
guinness

I would use FileExists over StringLen and DriveGetMap, as it's one less function call.

Always good to have different variations of achieving the same goal.


UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×