VERIFICAR USUARIO
Private Declare Function GetUserName Lib [Ô]advapi32.dll[Ô] Alias [Ô]GetUserNameA[Ô] (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function GetComputerName Lib [Ô]kernel32[Ô] Alias [Ô]GetComputerNameA[Ô] (ByVal lpBuffer As String, nSize As Long) As Long
Public Enum eModeLocal
emlUsername = 0
emlPCName = 1
End Enum
Public Function LocalStationInfo(bMode As eModeLocal) As String
Dim buffer As String
Const MAX_COMPUTERNAME_LENGTH = 31
Const UNLEN = 256
If bMode = emlPCName Then
buffer = Space(MAX_COMPUTERNAME_LENGTH + 1)
GetComputerName buffer, Len(buffer)
LocalStationInfo = buffer
End If
If bMode = emlUsername Then
buffer = Space(0)
buffer = Space(UNLEN + 1)
GetUserName buffer, Len(buffer)
LocalStationInfo = buffer
End If
End Function
Bom pessoal com a rotina acima eu pego o nome do usuario do micro, o caso é:
Private Sub MDIForm_Load()
Me.Caption = [Ô]Controle e Emissão da Lista de Materiais - Versão 1.0[Ô] + [Ô] [Ô] + [Ô]-[Ô] + [Ô] [Ô] + [Ô] [Ô] + [Ô]Usuário:[Ô] + UCase((LocalStationInfo(emlUsername)))
If LocalStationInfo(emlUsername) = [Ô]SVR[Ô] Then
MDIPrincipal.mnuCadastro.Enabled = True
MDIPrincipal.mnuSemat.Enabled = False
MDIPrincipal.mnuRelat.Enabled = False
MDIPrincipal.mnuUser.Enabled = False
MDIPrincipal.mnuSobre.Enabled = True
MDIPrincipal.mnuFechar.Enabled = True
End If
End Sub
estou tentando comparar com o IF acima para desabilitar o menu, só q não esta funcionado, dei um:
Debug.Print (LocalStationInfo(emlUsername))
e o (SVR) esta lá, que q esta faltando nesse IF?
Antes de mais nada, da próxima vez que abrir um tópico, SEPARE O CÓDIGO FONTE do TEXTO EXPLICATIVO para facilitar para os colegas que irão ajudá-lo (alterei pra você desta vez).
Voltando ao problema, o que o código acima [Ô]deveria[Ô] fazer?
Voltando ao problema, o que o código acima [Ô]deveria[Ô] fazer?
Boa tarde Amigo!
Cara, da uma limpada nesse código. Pra pegar o nome do usuário tu podes usar o seguinte:
dim str_Usuario as String
str_Usuario = Environ([Ô]USERNAME[Ô])
Testa ai...
Cara, da uma limpada nesse código. Pra pegar o nome do usuário tu podes usar o seguinte:
dim str_Usuario as String
str_Usuario = Environ([Ô]USERNAME[Ô])
Testa ai...
irenko, vc quando vc debuga o codigo, ele nao esta passsando dentro do if abaixo?
If LocalStationInfo(emlUsername) = [Ô]SVR[Ô] Then
MDIPrincipal.mnuCadastro.Enabled = True
MDIPrincipal.mnuSemat.Enabled = False
MDIPrincipal.mnuRelat.Enabled = False
MDIPrincipal.mnuUser.Enabled = False
MDIPrincipal.mnuSobre.Enabled = True
MDIPrincipal.mnuFechar.Enabled = True
End If
If LocalStationInfo(emlUsername) = [Ô]SVR[Ô] Then
MDIPrincipal.mnuCadastro.Enabled = True
MDIPrincipal.mnuSemat.Enabled = False
MDIPrincipal.mnuRelat.Enabled = False
MDIPrincipal.mnuUser.Enabled = False
MDIPrincipal.mnuSobre.Enabled = True
MDIPrincipal.mnuFechar.Enabled = True
End If
Tecla, o codigo pega o nome do usuario na rede.
ACG1574, fiz o debug somente com alinha:
Debug.Print (LocalStationInfo(emlUsername))
como faço o mesmo no IF para saber se esta entrando?
ACG1574, fiz o debug somente com alinha:
Debug.Print (LocalStationInfo(emlUsername))
como faço o mesmo no IF para saber se esta entrando?
coloque um ponto de parada em cima do IF, e quando vc executar ele vai parar la, ai vc vai dando F8, e vai passando o mouse em cima das variaveis pra ver o que tem denttro ok, e ao mesmo tempo vc vai ver se ele vai passar ou nao dentro do if. pra colocar o ponto de parada clico com o mouse na barra cinza do lado esquerdo da linha do if ok.
Blz! No IF a variavel (emlUsername) é = 0
essa variavel esta aqui:
Public Enum eModeLocal
emlUsername = 0
emlPCName = 1
End Enum
agora, como o que faço?
essa variavel esta aqui:
Public Enum eModeLocal
emlUsername = 0
emlPCName = 1
End Enum
agora, como o que faço?
eu fiquei intrigado como problema e veja solução qeu achei
altere sua função para esta
veja se funciona
altere sua função para esta
Public Function LocalStationInfo(bMode As eModeLocal) As String
Dim buffer As String
Const MAX_COMPUTERNAME_LENGTH = 31
Const UNLEN = 256
If bMode = emlPCName Then
buffer = Space(MAX_COMPUTERNAME_LENGTH + 1)
GetComputerName buffer, Len(buffer)
LocalStationInfo = buffer
End If
If bMode = emlUsername Then
buffer = Space(0)
buffer = Space(UNLEN + 1)
GetUserName buffer, Len(buffer)
LocalStationInfo = Replace(buffer, [Ô] [Ô], [Ô][Ô])
LocalStationInfo = Replace(LocalStationInfo, Chr(0), [Ô][Ô])
End If
End Function
veja se funciona
só pra constar, se você usar o environ terá o mesmo resultado, sem precisar da sua função.
ou estou errado?
Private Sub MDIForm_Load()
Me.Caption = [Ô]Controle e Emissão da Lista de Materiais - Versão 1.0[Ô] + [Ô] [Ô] + [Ô]-[Ô] + [Ô] [Ô] + [Ô] [Ô] + [Ô]Usuário:[Ô] + UCase(Environ([Ô]username[Ô]))
If UCase(Environ([Ô]username[Ô])) = [Ô]SVR[Ô] Then
MDIPrincipal.mnuCadastro.Enabled = True
MDIPrincipal.mnuSemat.Enabled = False
MDIPrincipal.mnuRelat.Enabled = False
MDIPrincipal.mnuUser.Enabled = False
MDIPrincipal.mnuSobre.Enabled = True
MDIPrincipal.mnuFechar.Enabled = True
End If
End Sub
ou estou errado?
Tópico encerrado , respostas não são mais permitidas