Olá a todos, bem, estou com um problema e gostaria de saber se alguém pode me explicar o porque esta acontecendo isso...
Estou criando um programa para monitorar uma rede remotamente, ou seja, será exibido vários pequenos monitores, nome da maquina e oque se esta vendo nele...
já pensei no esquema de compactar as imagens capturadas com a DLL (jpg) e jogar para o servidor via Wsck, até ai beleza...
Fiz alguns testes e foi tudo como eu esperava, o problema é que cada vez que se capura a tela e joga em uma picture, ocupa um pouco da memória, e quando vai capturando e jogando no "mesmo" picture, a memória começa a se encher, até o windows travar sem memória...
Para Capturar Não quero usar a Área de transferencia, porque além do processamento, quero deixa-la livre, então estou usando a API GetDC
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
e para carrega-la no form estou utilizando a API StretchBlt
Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
Pergunta
Allan Novaes
Olá a todos, bem, estou com um problema e gostaria de saber se alguém pode me explicar o porque esta acontecendo isso...
Estou criando um programa para monitorar uma rede remotamente, ou seja, será exibido vários pequenos monitores, nome da maquina e oque se esta vendo nele...
já pensei no esquema de compactar as imagens capturadas com a DLL (jpg) e jogar para o servidor via Wsck, até ai beleza...
Fiz alguns testes e foi tudo como eu esperava, o problema é que cada vez que se capura a tela e joga em uma picture, ocupa um pouco da memória, e quando vai capturando e jogando no "mesmo" picture, a memória começa a se encher, até o windows travar sem memória...
Para Capturar Não quero usar a Área de transferencia, porque além do processamento, quero deixa-la livre, então estou usando a API GetDC
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
e para carrega-la no form estou utilizando a API StretchBlt
Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
'Código simples---------------------------------------
hdcscreen = GetDC(0)
Picture1.Cls
r = StretchBlt(Picture1.hdc, 0, 0, w, h, hdcscreen, 0, 0, wScreen, hScreen, vbSrcCopy)
Dpois de carregar no picture e salvar o arquivo..Tentei os seguintes procedimentos:
1º dava um unload ou cls no picture
2º unload no form
nenhum dos dois liberou a memória =/
Então fica ai o meu problema.. :(
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.