Ir ao conteúdo

holifaca

Membro Júnior
  • Posts

    19
  • Cadastrado em

  • Última visita

Reputação

20
  1. .if: muito obrigado pela dica, a partir dela encontrei o que eu realmente queria fazer: usar a placa de som ao invés do PC speaker utilizando a biblioteca Alsalib. A ideia é criar uma musiquinha eletrônica na unha! hehe codigo rápido: obrigado pela sugestão, mas pelo que percebi as funções dessa biblioteca só tocam som se já tiver ele em formato de arquivo (.wav, mp3, .ogg). Eu quero fazer os sons via programação em C.
  2. Como faço pra sintetizar sons em diferentes notas (dó-ré-mí...) e frequências em C no Linux? Já fiz isso em Turbo Pascal no Windows em que havia uma funçao (se me lembro bem seu nome era Beep) que aceitava um valor do tipo real e, dependendo do número, a placa de som emitia um beep diferente.
  3. dwatashi, muito obrigado pela informação. Achei bem estranha a justificativa dada pelo desenvolvedor, que usou como pretexto a segurança do banco de dados local das "configurações remotas" e para forçar as suas atualizações", sendo que essa feature é totalmente dispensável para o uso do navegador. Estão empurrando goela abaixo esse spyware, pior ainda na versão ESR que é destinada a organizações e empresas.
  4. Oi pessoal, quero usar o Firefox 90esr, mas antes gostaria de desativar todas as conexões automáticas que ele abre quando rodamos o navegador. Já removi quase todas seguindo o artigo da Mozilla "Como parar as conexões automáticas do Firefox" (ver ref: 1). Infelizmente, ele continua contactando esse host bastante suspeito (apesar de não ter cara de um, parece se tratar de um spyware): firefox.settings.services.mozilla.com Utilizo o Wireshark e tcpdump no LInux para auditar as conexões automáticas e já tentei fazer o seguinte: about:config: services.settings.server = "" app.normandy.enabled = false messaging-system.rsexperimentloader.enabled = false browser.newtabpage.activity-stream.feeds.asrouterfeed = false Preferencias: Desativei tudo que abre conexões automáticas nessa tela. Arquivos omni.ja (ref: 2): Removi todas as referências que encontrei sobre aquele host dos arquivos de recurso "firefox/omni.ja" e "firefox/browser/omni.ja" (usei unzip + zip para recomprimir). Mesmo depois de todas essas alterações, o Firefox ainda insiste em contactar esse servidor sem o meu consentimento. Alguém tem ideia de como desativar essa conexão? # Referências: 1-https://support.mozilla.org/en-US/kb/how-stop-firefox-making-automatic-connections 2-https://wiki.archlinux.org/title/Firefox/Privacy#Editing_the_contents_of_omni.ja
  5. Teste o navegador Palemoon - http://linux.palemoon.org/ Ele usa a engine de uma versão antiga do Firefox que é bem leve mas atualizada para funcionar com sites atuais. Teste o Debian 7 com XFCE ou LXDE que é MUIITO leve, consome pouca memória e é rápido ao executar programas. Neste caso você estará por conta própria, pois eles não dão mais suporte pra essa versão. Se já tiveres boa experiência com Linux, vai fundo que não se arrependerá! Download Debian 7.11: https://cdimage.debian.org/mirror/cdimage/archive/7.11.0/
  6. Sim, essa função só funciona com programas alvos desenvolvidos em .NET e Win32 (funciona tanto em Windows de 32bits como em 64bits). Faça um teste com outros programas aí pra ver.
  7. A calculadora do Win10 é desenvolvida em UVP e é diferente da plataforma Win32. Que azar! A saída do jogo também inicia com ApplicationFrameHost.exe? Sabe dizer em qual linguagem ele foi feito?
  8. Teste o código abaixo e poste a saída completa: #include <tchar.h> #include <windows.h> #include <TlHelp32.h> #include <iostream> #include <Psapi.h> #include <wchar.h> using namespace std; uintptr_t GetModuleBaseAddress(DWORD procId, const wchar_t* modName) { uintptr_t modBaseAddr = 0; HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, procId); if (hSnap != INVALID_HANDLE_VALUE) { MODULEENTRY32W modEntry; modEntry.dwSize = sizeof(modEntry); if (Module32FirstW(hSnap, &modEntry)) { do { printf("szModule: %S\n", modEntry.szModule); if (!_wcsicmp(modEntry.szModule,modName)) { modBaseAddr = (uintptr_t)modEntry.modBaseAddr; break; } } while (Module32NextW(hSnap, &modEntry)); } else { cout<<"erro Module32FirstW(): "<<GetLastError()<<endl; } CloseHandle(hSnap); } else cout<<"erro CreateToolhelp32Snapshot(): "<<GetLastError()<<endl; return modBaseAddr; } int main(){ HWND GameHWND = FindWindow(0,"calculadora"); if (GameHWND == NULL) { cout<<"erro FindWindow(): "<<GetLastError()<<endl; return 1; } DWORD procId = 0; GetWindowThreadProcessId(GameHWND, &procId); std::cout<<"ProcID "<< procId << std::endl; //Getmodulebaseaddress uintptr_t moduleBase = GetModuleBaseAddress(procId, L"calc.exe"); std::cout<<"Modulebase "<< moduleBase<< std::endl; cin.ignore(); return 0; }
  9. O ID do processo também tá retornando 0? E quanto à pergunta 4) que fiz?
  10. Quase todos os serviços de Internet voltados para o público internacional e navegadores (IE, Firefox, Google Chrome, Safari) estão nas mãos do estado americano, que hoje usa-os para espionar VOCÊ! Comparado a eles a China é o mindinho do teu pé.
  11. 1-Rode o programa como administrador do sistema. 2-O ID do processo está retornando corretamente? 3-O teu programa funciona com a calculadora do Windows? Teste aí usando: "Calculadora" e L"calc.exe". 4-Esse jogo Mario é protegido por algum aplicativo tipo Gameguard, HShield, etc?
  12. você esqueceu de adicionar um W, verifica aí de novo. Se o erro continuar, poste seu novo código.
  13. Mesmo assim há ainda um problema de compatibilidade na codificação de caracteres no código dele. Perceba que ele chama FindWindow() passando uma string no formato Ansi (char*) e o código compila normalmente, o que indica que o compilador está tratando todas as chamadas APIs do Windows usando aquele charset. Já dentro da função GetModuleBaseAddress(), ele utiliza a estrutura modEntry sem especificar o charset, e aí o compilador trata ela como sendo Ansi, e quando chega na comparação das strings, que usa uma função Unicode, ele tenta converter a string char* em const wchar_t*, o que é errado! Para converter uma string tradicional do C em Unicode é necessário criar uma função para isso e não simplesmente usar um type casting.
  14. O problema é que a função _wcsicmp() está comparando duas strings de tipos diferentes: o argumento modName (que é do tipo wchar_t) e o campo szModule da estrutura modEntry, que o teu compilador está tratando como sendo do tipo char* (Ansi). Uma maneira de resolver isso é forçando a declaração da estrutura modEntry como sendo do tipo Unicode e chamando suas respectivas funções Unicode para a mesma. É só adicionar um W no fim de cada termo, assim: MODULEENTRY32W modEntry; Module32FirstW() Module32NextW()
  15. A função abaixo cria a declaração de um vetor do C em texto plano a partir de um arquivo binário qualquer que você pode copiar-colar no teu código, bastando mudar o nome do array. Para passar o vetor como argumento para a função loadMemory(), que talvez esteja esperando um ponteiro do tipo char*, faça: loadFromMemory((char*)nomeDoArray, sizeof(nomeDoArray)); você pode mudar o valor da constante MAXCOLS para outro numero se preferir. #include <stdio.h> #include <stdlib.h> #include <string.h> /* Input.: arquivo binario Output: const unsigned char nomeDoArray[]={ 0x00,0x11,0x22,0x33,0x44, 0x55,0x66,0x77,0x88,0x99 }; */ char* ArquivoParaVetorDeBytesC(const char *arqNome, char **dest) { const int MAXCOLS = 16; FILE *arq = fopen(arqNome,"rb"); fseek(arq, 0, SEEK_END); size_t arqTam = ftell(arq); rewind(arq); unsigned char b; char sByte[16]; int j = 0; size_t bufTam = arqTam * 16; char *buf = (char*)malloc(bufTam); memset(buf, 0, bufTam); // adiciona a declaracao do array strcat(buf, "const unsigned char nomeDoArray[]={\n"); while( fread(&b, sizeof(b), 1, arq) == 1 ) { if (j < MAXCOLS) { sprintf(sByte, "0x%02X,", b); strcat(buf, sByte); j++; } else { sprintf(sByte, "0x%02X,\n", b); strcat(buf, sByte); j = 0; } } strcat(buf, "\n};"); *dest = buf; return *dest; } int main() { char *buf = NULL; ArquivoParaVetorDeBytesC("imagem.png", &buf); printf("%s\n", buf); // Libera a memoria a memoria apontada por buf, que foi alocada dentro da funcao. free(buf); return 0; }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!