Página 1 de 2
Quando não é feito o LOG-IN no WINDOWS
Enviado: 10 Mar 2007 15:12
por Pablo César
Quando é inicializado o terminal numa rede Win98 (digamos) e o usuário não faz LOGIN (adequadamente) na rede, simplesmente dá um ESC. Mas no WINDOWS 98, 95 e creio que no ME segue enfrente a entrada no WINDOWS. Porém é impossibilitado de forçar o acesso a rede com o NET USE, porque diz que primeiramente deve se LOGADO. Daí a solução é ir no menu iniciar e fazer o LOGOFF daquela estação. Com a falta de atenção do usuário, pode ser pensar que há algum problema na rede e causar contra-tempos.
Bem gostaria de saber se teria como saber se esse LOG-IN foi efetuado no WINDOWS para depois chamar o NET USE ? Alguem sabe como ?
Um clip-abraço ´o)
A solução está em DELPHI
Enviado: 10 Mar 2007 17:09
por Pablo César
Caros colegas,
Achei ! O quê não é encontrado na INTERNET ?. Mas o problema é que está escrito na linguagem DELPHI e eu não o tenho. Mas se algum samaritano fizer o favor de compilar, para que gere em arquivo TEXTO o seu resultado (não deve exibir nada em tela). Como eu e muitos aqui iremos agradecer. Aqui vai:
function GetUserName:string;
var
Nome: array[0..64] of char;
begin
if DbiGetNetUserName(Nome) DBIERR_NONE then
Nome:='';
Result:=StrPas(Nome);
end;
Acredito eu, que se não estiver logado o resultado será
VAZIO
Quem for compilar, favor disponibilza-lo na INTERNET e postar aqui o código fontes mudado.
Um clip-DELPHI-abraço hehe :)Pos
Enviado: 11 Mar 2007 22:44
por Pablo César
Não sei se porque foi FIM-DE-SEMANA, ou o quê ? Mas não apareceu algum bom SAMARITANO aqui no FORUM para presentear-nos com a compilação dessa função. Talvez, os BONS SAMARITANOS tenham ido a IGREJA neste domingo e por isso impera sua ausência... hehehe
Será que vou ter que pedir mais um favor para o MALIGNO

?
Um clip-abraço, colegas :)Pos (eu não pediria se eu pudesse fazer...)
Enviado: 11 Mar 2007 23:17
por Maligno
Já vou avisando:
DbiGetNetUserName não é uma função da API do Windows. Pior que isso. É uma função da API do BDE. Não vai dar pra usar esse trem sem antes instalar o BDE. Sinto muito.
[]'s
Maligno
http://www.buzinello.com/prg
Enviado: 11 Mar 2007 23:22
por Pablo César
ummm... Entendí, MALIGNO. Que droga !. Era muito fácil para ser verdade. E instalar BDE, é o que mais detestaria fazer. Esta é uma das causas que não me impulsiona para uma linguagem GUI.
Que pena !

Mas obrigado pelo esclarecimento. Senão eu estaria rodando um aplicativo sem sucesso ou pior ter que instalar em todas as máquinas BDE.
Enviado: 11 Mar 2007 23:46
por Maligno
Pablo César escreveu:Esta é uma das causas que não me impulsiona para uma linguagem GUI.
Ah, mas essa desculpa não cola. Leia o
BDE Alternatives List e veja que há dezenas de motivos para esquecer que o BDE existe. Nem a própria Borland usa mais.
[]'s
Maligno
http://www.buzinello.com/prg
Enviado: 12 Mar 2007 00:14
por Pablo César
Sei que soa muito cômodo da minha parte alegar isso. Mas há alguns anos atrás, via alguns colegas fazrem instalações BDE e alterações do OS para que seus sistemas rodassem. Eu sempre achei que é tão amigável instalar os nossos sistema em Clipper sem fazer muitas alterações. Mas é claro, que a coisa deve ter evoluido e eu estou desinformado. Por isso aceito a sua desmascaragem... (não sei se existe esta palavras, hihihihi)
Mas deixa te contar como resolví esta questão (de forma IMEDIATISTA, hehe). Sabe, eu gosto muito de utilizar arquivo BAT para chamar meus programas. Sendo que após a tentativa de FORÇAR o NET USE e não é efetivado porque (esqueceram de LOGAR-SE na rede). O NET USE devolve "ERRO 3787: Você precisa efetuar o LOGON antes de executar esta operação", mas também devolve um ERRORLEVEL (número 203, no WIN 98). Daí que mostro para o usuário uma mensagem dizendo que deve LOGAR-SE na rede. Funcionou legal.
Um clip-abraço !
Enviado: 12 Mar 2007 00:32
por Clipper
Prezado Pablo
Porque você não usa o NETREDIR() da CT ao invés de usar o NET USE do DOS, me parece que tem uma função que retorna o nome do usuário logado também, mas como não tenho 98 aqui não testei, e nem dá para testar no XP já que ele obriga a logar.
Até logo.
Marcelo
Enviado: 12 Mar 2007 00:47
por Maligno
Pablo César escreveu:Mas é claro, que a coisa deve ter evoluido e eu estou desinformado.
Sem dúvida. Programas que manipulam bancos de dados, se for o caso e dependendo de como foram construídos e que banco utilizam, nem precisam ser instalados. Podem ser apenas copiados, como se costuma fazer com programas Clipper. Se bem que, se for para instalar alguma coisa, não será esse o maior empecilho. O problema do BDE não está na instalação, mas na qualidade dele. Se nem a própria Borland usa,...
[]'s
Maligno
http://www.buzinello.com/prg
Enviado: 12 Mar 2007 00:51
por Pablo César
Olha MARCELO !. Não tinha conhecido esta função NETREDIR().
Sempre pensei todas as funções do CT.LIB provenientes do "Book 4 - Function for IBM - PC/LAN" seriam para tratamento de redes NOVELL, olha só que perda de tempo... A função a que você se refere parece é o NNETLGUSER(), só que me devolve o array NUL, deve ser porque não é pra redes sem servidor DEDICADOS. Mas de agora em mais, vou testar melhor algumas funções para rede que talvez funcione.
Mas também não daria certo no meu caso, ora porque eu antes de chamar meu sistema que está instalado no servidor de uma rede. Verifico se está logado e se tem acesso ao sistema. E tudo isto é feito através de um arquivo em lote. A principio, funcionou a minha alternativa. Pois o arquivo em lote faz varias coisinhas antes de chamar meu sistema.
Agradeço muito sua ajuda. Sem teu toque eu iria ficar sem ver essas funções do Book 4. Valeu colega !
Um clip-abraço :{ :)Pos (como rende o nosso serviço a esta hora... hehe)
Enviado: 15 Mar 2007 12:57
por Pablo César
Insistindo mais um pouquinho...
Achei este código em liguagem C que pode ser utilizado como biblioteca para o Clipper no site
http://www.ousob.com/c_code/cmenu.php para uma função WHOAMI:
#include <memory.h>
#include <nwlocal.h>
#include <nwconn.h>
#include <extend50.h>
CLIPPER b_whoami()
{
WORD objType;
int ccode;
char objName[48];
long objID;
BYTE loginTime[7];
char day[10], time[9], ttime[3], AmPm[3];
WORD year;
int PM;
char month[9];
WORD ConnectionNumber;
int gotAproblem = 0;
memset(objName,'\0',48);
ConnectionNumber = GetConnectionNumber();
if( ConnectionNumber == 0 ){
gotAproblem = 1;
}
if( !gotAproblem ){
ccode = GetConnectionInformation( ConnectionNumber, objName, &objType,
&objID, loginTime );
if ( ccode != 0 ){
objName[0] = NULL;
}
}
_retc(objName);
}
MALIGNO, esta função serviria para o WIN98 WIN95 ou seria para redes NOVELL ?.
Um clip-abraço :)Pos
Enviado: 15 Mar 2007 13:23
por Maligno
Pablo César escreveu:MALIGNO, esta função serviria para o WIN98 WIN95 ou seria para redes NOVELL ?.
Levando-se em conta o prefixo dos headers, é o que parece. Na API da Novel há uma função
GetConnectionInformation. Então, é bem provável que funcione apenas em redes Novell.
Esse fonte C deve ser equivalente à função
NNETWHOAMI da CaTools.
[]'s
Maligno
http://www.buzinello.com/prg
Enviado: 22 Mar 2007 17:44
por Pablo César
Então estão ainda sem solução para isto. Também... logo logo o WINDOWS 98 vai acabar e não iremos precisar disso, não é mesmo ?
sds :| -:]
Enviado: 23 Mar 2007 07:49
por ederxc
Paulo , me deixa entender , vc quer pegar o login do win 98 para validar o usuario , por isso da problema na hr que ele tecla (ESC) ?? Se for isso , pq vc ñ valida direto no sistema e deixa o windows fora disso !
Enviado: 23 Mar 2007 08:16
por Pablo César
Não, não é isso, Eder. Vou te explicar:
No WIN98 e WIN95 em rede quando é ligado o computador aparece a 1ª janela do WINDOWS para fazer LOGIN, que seria para colocar nome e senha do usuário na rede, mas as vezes o usuário dá um ESC. Por causa disso aquela estação, não entrará na rede até ele fazer o LOGIN. Porque se for dar um NET USE, este comando irá dar uma mensagem dizendo que deve fazer o LOGON. A finalidade desta função para determinar o nome do usuário LOGADO, seria para ver se entrou normalmente com o LOGON, é dizer se a função voltar com nome NULO é porque não fez o LOGON. Isso é uma falha do SO porque nos WINDOWS posteriores não acontece, porque ele força a colocar a senha.
Estou pendindo isso, porque ja me deparei com essa situação, é dizer o comarada liga o computador e tentar entra no programa e como não está em rede, não consegue. Claro, porque não LOGOU devidamente.
Um clip-abraço :)Pos