Inquiridor
capturar Memória de Vídeo(endereço B800:0000)

Pergunta
-
Todas as Respostas
-
tou meio que tentando entender a sua pergunta... seria a memoria da placa de video? ou seria o video rodando em algum aplicativo?
de qualquer maneira... eu normalmente capturo a memoria utilizando : ReadProcessMemory (Win32 api)
ex:
Code SnippetGetWindowThreadProcessId(FindWindow("MyWindowClass", NULL), &dwProcessID);
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessID);
if(!hProcess)
return 0;
ReadProcessMemory(hProcess, (LPCVOID) dwBaseAddress, szBuffer, 5, &strNumOfBytesRead);
CloseHandle(hProcess);[]'s
Waner Tavares
-
Olá Waner, consegui usando a linguagem C, é mais ou menos assim:
unsigned char far *video = (unsigned char far *) 0xB8000000L;
//-------------------------------------------------------------
void teste(void)
{
FILE *txt;
int i;
txt = fopen("c:/testerobson.txt","a+t");
for(i=0; i<(80*50); i++){
video[i*2] = 0x41;
video[i*2+1] = 0x20;
fwrite(&video, sizeof(video
),1, txt);
}
getch();
}
-
-
Caro amigo desculpe a demora em responder-te, as funções principais estão em C usando o compilador da Borland
unsigned char far *video = (unsigned char far *) 0xB8000000L;
char vid[8000];
//-------------------------------------------------------------
void clrscr()
{
int i;
for(i=0; i<(80*50); i++) {
video[i*2] = 0x20;
video[i*2+1] = 0x07;
}
}
//------------------------------------------------------------
void salvar()
{
FILE *txt;
int i,j=1;
if ((txt = fopen("G:\\ROBSON.TXT", "wt")) == NULL){
fprintf(stderr, "Cannot open output file.\n");
exit(1);}
for(i=0; i<8000; i++){
vid=video
;
if (i%2==0){
fputc(video, txt);
j++;
if(j==80){
fputc('\n',txt);
j=0;}
}}
fclose(txt);
}
//------------------------------------------------------------
void restaurar()
{
int a;
for(a=0;a<8000;a++){
video= vid
;
}
}
//------------------------------------------------------------