[quote=matheuslmota]Cara, tu pode fazer duas coisas, ou tu gera uma dll e chamar no Java com JNI ou tu manda o programa gerar um arquivo com a informação do modem e lê esse arquivo no Java. Você quer apenas capturar a informação de que existe um modem discado no pc ou quer manipular esse modem via programação?
[code]HDVINFO hdi := SetupDiGetClassDevs(@GUID_DEVCLASS_NET, nil, 0, DIGCF_PRESENT);
if cardinal(hdi) = INVALID_HANDLE_VALUE then
begin
Result := False;
end[/code]
Esse trecho de código retorna se tem uma pla de rede instalada no pc. Tá em Delphi, mas em C++ é a mesma coisa.[/quote]
Apenas capturar a informação, ja que para realizar as discagem da conexão, é nescessário criar um arquivo de configuração
de extensão .pbk, na verdade um arquivo de texto com as informações da conexão.
E neste arquivo, é preciso listar o modem que esta instalado e em qual porta (com3 ou com4)
[code]public void geraPbk(Telefone tel){
String pbk = "[Conexao]"+
"\n"+"Encoding=1"+
"\n"+"Type=1"+
"\n"+"AutoLogon=0"+
"\n"+"UseRasCredentials=0"+
"\n"+"DialParamsUID=2708750"+
"\n"+"Guid=599BC288F97C8345A8D43165C93E1435"+
"\n"+"BaseProtocol=1"+
"\n"+"VpnStrategy=0"+
"\n"+"ExcludedProtocols=3"+
"\n"+"LcpExtensions=1"+
"\n"+"DataEncryption=8"+
"\n"+"SwCompression=1"+
"\n"+"NegotiateMultilinkAlways=0"+
"\n"+"SkipNwcWarning=0"+
"\n"+"SkipDownLevelDialog=0"+
"\n"+"SkipDoubleDialDialog=0"+
"\n"+"DialMode=1"+
"\n"+"DialPercent=75"+
"\n"+"DialSeconds=120"+
"\n"+"HangUpPercent=10"+
"\n"+"HangUpSeconds=120"+
"\n"+"OverridePref=15"+
"\n"+"RedialAttempts=3"+
"\n"+"RedialSeconds=60"+
"\n"+"IdleDisconnectSeconds=1200"+
"\n"+"RedialOnLinkFailure=1"+
"\n"+"CallbackMode=0"+
"\n"+"CustomDialDll="+
"\n"+"CustomDialFunc="+
"\n"+"CustomRasDialDll="+
"\n"+"AuthenticateServer=0"+
"\n"+"ShareMsFilePrint=0"+
"\n"+"BindMsNetClient=0"+
"\n"+"SharedPhoneNumbers=1"+
"\n"+"GlobalDeviceSettings=0"+
"\n"+"PrerequisiteEntry="+
"\n"+"PrerequisitePbk="+
"\n"+"PreferredPort="+
"\n"+"PreferredDevice="+
"\n"+"PreferredBps=0"+
"\n"+"PreferredHwFlow=0"+
"\n"+"PreferredProtocol=0"+
"\n"+"PreferredCompression=0"+
"\n"+"PreferredSpeaker=0"+
"\n"+"PreferredMdmProtocol=0"+
"\n"+"PreviewUserPw=1"+
"\n"+"PreviewDomain=0"+
"\n"+"PreviewPhoneNumber=1"+
"\n"+"ShowDialingProgress=1"+
"\n"+"ShowMonitorIconInTaskBar=1"+
"\n"+"CustomAuthKey=-1"+
"\n"+"AuthRestrictions=632"+
"\n"+"TypicalAuth=1"+
"\n"+"IpPrioritizeRemote=1"+
"\n"+"IpHeaderCompression=1"+
"\n"+"IpAddress=0.0.0.0"+
"\n"+"IpDnsAddress=0.0.0.0"+
"\n"+"IpDns2Address=0.0.0.0"+
"\n"+"IpWinsAddress=0.0.0.0"+
"\n"+"IpWins2Address=0.0.0.0"+
"\n"+"IpAssign=1"+
"\n"+"IpNameAssign=1"+
"\n"+"IpFrameSize=1006"+
"\n"+"IpDnsFlags=0"+
"\n"+"IpNBTFlags=0"+
"\n"+"TcpWindowSize=0"+
"\n"+"UseFlags=1"+
"\n"+"IpSecFlags=0"+
"\n"+"IpDnsSuffix="+
"\n\n"+"NETCOMPONENTS="+
"\n"+"ms_server=0"+
"\n"+"ms_msclient=0"+
"\n\n"+"MEDIA=serial"+
"\n"+"Port=COM3"+ //aqui preciso saber em que porta o modem esta instalado
"\n"+"Device=Motorola SM56 Speakerphone Modem"+ //aqui o nome do dispositivo
"\n"+"ConnectBPS=115200"+ //aqui a velocidade da porta do modem
"\n\n"+"DEVICE=modem"+ //aqui simplesmente diz que é um modem que será usado na conexão
"\n"+"PhoneNumber="+tel.getNumero()+
"\n"+"AreaCode="+tel.getDdd()+
"\n"+"CountryCode=1"+
"\n"+"CountryID=55"+
"\n"+"UseDialingRules=0"+
"\n"+"Comment="+
"\n"+"LastSelectedPhone=0"+
"\n"+"PromoteAlternates=0"+
"\n"+"TryNextAlternateOnFail=1"+
"\n"+"HwFlowControl=1"+
"\n"+"Protocol=1"+
"\n"+"Compression=1"+
"\n"+"Speaker=1"+
"\n"+"MdmProtocol=0";
FileWriter arquivo;
try {
arquivo = new FileWriter(new File("C:/Documents and Settings/All Users/Dados de aplicativos/Microsoft/Network/Connections/Pbk/rasphone.pbk"));
arquivo.write(pbk);
arquivo.close();
}
catch (IOException e) {
e.printStackTrace();
}
}[/code]
no caso esse caminho de pasta é valido no windows XP, não testei em outros ainda
Na verdade ontem eu consegui encontrar estas informações pelo registro do windows, consegui acessar estas mesmas informações através do prompt
exportando a chave de registro para um arquivo txt, mas ele vem em formato hexadecimal, pela interface gráfica do regedit eu consigo exportar em txt,
com texto normal, mas pelo prompt, fica um arquivo txt, com as informações em hexadecimal. mas isso foi ontem a noite, quando estava saindo do serviço
segunda feira eu dou mais uma fuçada, ja que os comandos que eu estava testando ficaram la, e aqui em casa nem tem modem pra testar…