VERIFICAR USUARIO

IRENKO 04/11/2009 13:25:03
#326917
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?
TECLA 04/11/2009 14:52:49
#326920
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?
ALEMAO 04/11/2009 15:15:53
#326926
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...

ACG1574 04/11/2009 15:48:48
#326934
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
IRENKO 04/11/2009 16:00:43
#326938
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 04/11/2009 16:23:07
#326941
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.
IRENKO 04/11/2009 17:13:40
#326943
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?
MARCELO.TREZE 04/11/2009 18:34:00
#326951
Resposta escolhida
eu fiquei intrigado como problema e veja solução qeu achei

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

MARCELO.TREZE 04/11/2009 18:45:39
#326952
só pra constar, se você usar o environ terá o mesmo resultado, sem precisar da sua função.

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