kapiaba Posted September 2, 2022 Report Share Posted September 2, 2022 Tarde galera do mal, Como Verificar a Resolução de Tela do Windows, via comando do FiveWin, eu vi algo no forum inter, más não acho o tópico, na época não me pareceu importante, mas agora eu preciso para informar ou tomar uma decisão qual DIALOG deve "Carregar"? Estou criando vários DIALOGOS para diferentes Resoluções de Tela. Gracias, Regards, saludos. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 2, 2022 Author Report Share Posted September 2, 2022 Please, alguém pode testar pra mim em Wndows 10 ou 11 por favor? // C:\FWH..\SAMPLES\RESOLU2.PRG #include 'fivewin.ch' #Include "dll.ch" #Include "Struct.ch" FUNCTION MAIN() LOCAL nResoAncho := GetSysMetrics(0) IF nResoAncho < 1280 .OR. nResoAncho > 1280 // CamReso( 800, 600) CamReso( 1280, 768) MSGINFO('HECHO. AQUI PUEDES INICIAR TU PROGRAMA ELABORADO PARA 1280 X 768') ENDIF RETU nil Function CamReso( nAncho, nAlto ) Local DM_PELSWIDTH := nHex("80000") Local DM_PELSHEIGHT := nHex("100000") Local oDevMode Local lPosible Local cBuffer Local lCamReso := .f. DEFAULT nAncho := GetSysMetrics(0), nAlto := GetSysMetrics(1) STRUCT oDevMode MEMBER cDevName AS STRING LEN 32 MEMBER nSpecVer AS WORD MEMBER nDrvVer AS WORD MEMBER nSize AS WORD MEMBER nDrvExtra AS WORD MEMBER nFields AS DWORD MEMBER nOrientat AS WORD MEMBER nPaperSiz AS WORD MEMBER nPaperLen AS WORD MEMBER nPaperWid AS WORD MEMBER nScale AS WORD MEMBER nCopies AS WORD MEMBER nDefSrc AS WORD MEMBER nPrnQlty AS WORD MEMBER nColor AS WORD MEMBER nDuplex AS WORD MEMBER nYResolut AS WORD MEMBER nTTOpt AS WORD MEMBER nCollate AS WORD MEMBER cFormName AS STRING LEN 32 MEMBER nUnusePad AS WORD MEMBER nBitsPPel AS DWORD MEMBER nPelWidth AS DWORD MEMBER nPelHeigh AS DWORD MEMBER nDisFlags AS DWORD MEMBER nDisFreq AS DWORD ENDSTRUCT cBuffer := oDevMode:cBuffer lPosible := EnumDisplaySettings(0, 0, @cBuffer) IF lPosible oDevMode:nFields := nOr(DM_PELSWIDTH, DM_PELSHEIGHT ) oDevMode:nPelWidth := nAncho oDevMode:nPelHeigh := nAlto cBuffer:=oDevMode:cBuffer TRY ChangeDisplaySettings(@cBuffer, 4) lCamReso := .T. CATCH MsgAlert("Modo no soportado", "Error" ) END else MsgAlert("Modo no soportado", "Error" ) endif return lCamReso DLL32 FUNCTION EnumDisplaySettings(lpszDeviceName AS DWORD,; iModeNum AS DWORD, ; @lpDevMode AS LPSTR) AS BOOL PASCAL; FROM "EnumDisplaySettingsA" LIB "User32.dll" DLL32 STATIC FUNCTION ChangeDisplaySettings(@lpDevMode AS LPSTR,; dwFlags AS DWORD) AS DWORD PASCAL; FROM "ChangeDisplaySettingsA" LIB "User32.dll" DLL32 FUNCTION ExitWindowsEx(uFlags AS DWORD,; dwReserved AS DWORD) AS DWORD PASCAL; LIB "user32.dll" // FIN Regards, saludos. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 2, 2022 Author Report Share Posted September 2, 2022 Esse tema sempre foi complicado para a equipe da FiveTech. kkkkkkkkkkkkkkkkk http://forums.fivetechsupport.com/viewtopic.php?f=6&t=42143&sid=1682f82db2da373198ab9ec28b8a265c Regards, saludos. Quote Link to comment Share on other sites More sharing options...
emotta Posted September 2, 2022 Report Share Posted September 2, 2022 faz tempo que não mexo com isso, mas eu verificava a resolução com base na window principal. Fazia desta forma: (não sei se vai te ajudar) nHeight:= oObjWnd:nHeight nWidth := oObjWnd:nWidth Quote Link to comment Share on other sites More sharing options...
zekasan Posted September 2, 2022 Report Share Posted September 2, 2022 Uso uma rotina que o Vagner fez faz um tempão TAMANHO_VIDEO:=VRESVIDEO() ? TAMANHO_VIDEO[1],TAMANHO_VIDEO[2] /********************************************************* * Função : Funcao em C para pegar a Resolução da Tela * Data : 13/03/2013 à s 12:05:26 por Vagner * Revisado em : 13/03/2013 à s 12:05:35 por Vagner * Parâmetros : * iWidthNew - Largura MÃnima Necessária * iHeightNew - Altura MÃnima Necessária **********************************************************/ #Pragma BEGINDUMP #include <Windows.h> #include <ShellApi.h> #include <Wingdi.h> #include <hbapi.h> HB_FUNC (VRESVIDEO) { int iWidth,iHeight ; //Pega a Configuração Atual DEVMODE DeviceMode = { 0 }; EnumDisplaySettings( NULL, ENUM_CURRENT_SETTINGS, &DeviceMode ); iWidth = DeviceMode.dmPelsWidth; iHeight = DeviceMode.dmPelsHeight; hb_reta( 2 ); hb_storni( iWidth , -1, 1 ); hb_storni( iHeight, -1, 2 ); } #pragma ENDDUMP Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 3, 2022 Author Report Share Posted September 3, 2022 Bom dia ZecaSan, essa do Vagner, não funciona em Windows 10, trava geral. Obg. abs. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 3, 2022 Author Report Share Posted September 3, 2022 20 horas atrás, kapiaba disse: Please, alguém pode testar pra mim em Wndows 10 ou 11 por favor? // C:\FWH..\SAMPLES\RESOLU2.PRG #include 'fivewin.ch' #Include "dll.ch" #Include "Struct.ch" FUNCTION MAIN() LOCAL nResoAncho := GetSysMetrics(0) IF nResoAncho < 1280 .OR. nResoAncho > 1280 // CamReso( 800, 600) CamReso( 1280, 768) MSGINFO('HECHO. AQUI PUEDES INICIAR TU PROGRAMA ELABORADO PARA 1280 X 768') ENDIF RETU nil Function CamReso( nAncho, nAlto ) Local DM_PELSWIDTH := nHex("80000") Local DM_PELSHEIGHT := nHex("100000") Local oDevMode Local lPosible Local cBuffer Local lCamReso := .f. DEFAULT nAncho := GetSysMetrics(0), nAlto := GetSysMetrics(1) STRUCT oDevMode MEMBER cDevName AS STRING LEN 32 MEMBER nSpecVer AS WORD MEMBER nDrvVer AS WORD MEMBER nSize AS WORD MEMBER nDrvExtra AS WORD MEMBER nFields AS DWORD MEMBER nOrientat AS WORD MEMBER nPaperSiz AS WORD MEMBER nPaperLen AS WORD MEMBER nPaperWid AS WORD MEMBER nScale AS WORD MEMBER nCopies AS WORD MEMBER nDefSrc AS WORD MEMBER nPrnQlty AS WORD MEMBER nColor AS WORD MEMBER nDuplex AS WORD MEMBER nYResolut AS WORD MEMBER nTTOpt AS WORD MEMBER nCollate AS WORD MEMBER cFormName AS STRING LEN 32 MEMBER nUnusePad AS WORD MEMBER nBitsPPel AS DWORD MEMBER nPelWidth AS DWORD MEMBER nPelHeigh AS DWORD MEMBER nDisFlags AS DWORD MEMBER nDisFreq AS DWORD ENDSTRUCT cBuffer := oDevMode:cBuffer lPosible := EnumDisplaySettings(0, 0, @cBuffer) IF lPosible oDevMode:nFields := nOr(DM_PELSWIDTH, DM_PELSHEIGHT ) oDevMode:nPelWidth := nAncho oDevMode:nPelHeigh := nAlto cBuffer:=oDevMode:cBuffer TRY ChangeDisplaySettings(@cBuffer, 4) lCamReso := .T. CATCH MsgAlert("Modo no soportado", "Error" ) END else MsgAlert("Modo no soportado", "Error" ) endif return lCamReso DLL32 FUNCTION EnumDisplaySettings(lpszDeviceName AS DWORD,; iModeNum AS DWORD, ; @lpDevMode AS LPSTR) AS BOOL PASCAL; FROM "EnumDisplaySettingsA" LIB "User32.dll" DLL32 STATIC FUNCTION ChangeDisplaySettings(@lpDevMode AS LPSTR,; dwFlags AS DWORD) AS DWORD PASCAL; FROM "ChangeDisplaySettingsA" LIB "User32.dll" DLL32 FUNCTION ExitWindowsEx(uFlags AS DWORD,; dwReserved AS DWORD) AS DWORD PASCAL; LIB "user32.dll" // FIN Regards, saludos. Suspeitei desde o principio que este exemplo iria dar problemas no WINDOWS 10, igual ao programa do Vagner, conforme reportes do forum inter isso gera o perereco da pohha no Windows 10. No windows 7 de 32 bits, funciona de boas. Misterios da pohha. Obg. abs. Regards, saludos. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 3, 2022 Author Report Share Posted September 3, 2022 18 horas atrás, emotta disse: faz tempo que não mexo com isso, mas eu verificava a resolução com base na window principal. Fazia desta forma: (não sei se vai te ajudar) nHeight:= oObjWnd:nHeight nWidth := oObjWnd:nWidth Bom dia Eduardo, isso não vai me retornar a RESOLUÇÃO DE TELA DO MONITOR, e sim, o tamanho da JANELA WINDOW do Programa, não tem como eu saber qual é a RESOLUÇÃO e dizer ao programa para pegar do ARQUIVO.RES, o dialogo para a RESOLUÇÃO DE TELA escolhida pelo usuário em cada máquina da empresa, entende? Obg. abs. Reagrds, saludos. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 3, 2022 Author Report Share Posted September 3, 2022 É não vai ter jeito, não queria criar várias telas(diálogos), más como o programa do exemplo acima não funciona em Windows 10, vou ter que checar o Tamanho com o GetSysMetrics e "chamar" a tela correspondente. O ideal seria ter uma tela só, 1280 x 768 e mudar a resolução do cliente em tempo real, enquanto ele estivesse usando o programa, ao sair, voltaria a resolução original dele. Más infelizmente a pohha do Windows 10 dá crash(quebra) total e ficou inviável a idéia. Pohha, vou ter que trabalhar. kkkkkkkkkkkk nResHoriz := GetSysMetrics(0) nResVert := GetSysMetrics(1) Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 3, 2022 Author Report Share Posted September 3, 2022 Esta é a solução que eu vejo de momento para não travar o windows 10. Sugestões, são bem vindas, lógico. #Include "fivewin.ch" #Include "dbcombo.ch" STATIC oDlg, oWnd MEMVAR nResHoriz, nResVert, nResolution FUNCTION Main() // Janela Invisivel - coordenadas DEFINE WINDOW oWnd TITLE "Display" FROM -1, -1 TO -1, -1 nResHoriz := oWnd:nHorzRes() // retorna a resolucao horizontal nResVert := oWnd:nVertRes() // retorna a resolucao vertical nResolution := Resolution( oWnd ) DEFINE DIALOG oDlg SIZE 600, 450 PIXEL ; STYLE nOr( DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_SYSMENU, 4 ) oDlg:lHelpIcon := .F. ACTIVATE DIALOG oDlg CENTERED ON INIT( MakeComboBox( oDlg ) ) oWnd:End() ACTIVATE WINDOW oWnd RETURN NIL FUNCTION MakeComboBox( oDlg ) LOCAL oGet, oCbx, oSay LOCAL nTotal := 0 LOCAL cItem := "UNO" @ 10, 10 SAY "IMPORTE" OF oDlg PIXEL COLOR CLR_HBLUE TRANSPARENT UPDATE // * 3 = 1024 X 768 my resolution @ 150, 10 SAY oSay PROMPT "Resolution:-> " + STR(nResolution) OF oDlg ; PIXEL COLOR CLR_BLACK TRANSPARENT UPDATE SIZE 100, 12 @ 30, 10 GET oGet VAR nTotal OF oDlg SIZE 60, 15 PICTURE "999,999.99" ; PIXEL UPDATE @ 10, 80 SAY "Selecciona un ITEM " OF oDlg PIXEL COLOR CLR_HBLUE UPDATE ; TRANSPARENT @ 30, 80 COMBOBOX oCbx VAR cItem OF oDlg STYLE CBS_DROPDOWNLIST ; PIXEL SIZE 100, 300 UPDATE ON CHANGE MsgBeep() ; ITEMS {"UNO","DOS","TRES","CUATRO","CINCO"} RETURN NIL FUNCTION Resolution( oWnd ) IF nResHoriz = 2560 .AND. nResVert = 1600 // 12 2560x1600 8:5 WQXGA 0.05% nResolution := 13 ELSEIF nResHoriz = 2560 .AND. nResVert = 1440 // 13 2560 x 1440 0.92% nResolution := 12 ELSEIF nResHoriz = 1920 .AND. nResVert = 1080 //14 1920x1080 16:9 HD 1080 10.97% nResolution := 14 ELSEIF nResHoriz = 1680 .AND. nResVert = 1050 //15 1680x1050 8:5 WSXGA+ 3.29% nResolution := 15 ELSEIF nResHoriz = 1600 .AND. nResVert = 1200 * 7 = 1600 X 1200 nResolution := 7 ELSEIF nResHoriz = 1440 .AND. nResVert = 900 * 9 = 1440 X 900 nResolution := 9 ELSEIF nResHoriz = 1366 .AND. nResVert = 768 // 16 1366x768 HD 22.98% nResolution := 16 ELSEIF nResHoriz = 1360 .AND. nResVert = 768 //17 1360x768 2.33% nResolution := 17 ELSEIF nResHoriz = 1280 .AND. nResVert = 1080 // 18 1280x1080 0.001% nResolution := 18 ELSEIF nResHoriz = 1280 .AND. nResVert = 1024 * 6 = 1280 X 1024 nResolution := 6 ELSEIF nResHoriz = 1280 .AND. nResVert = 960 // 19 1280x960 0.46% nResolution := 19 ELSEIF nResHoriz = 1280 .AND. nResVert = 800 * 5 = 1280 X 800 nResolution := 5 ELSEIF nResHoriz = 1280 .AND. nResVert = 768 * 10 = 1280 X 768 nResolution := 10 ELSEIF nResHoriz = 1280 .AND. nResVert = 720 * 11 = 1280 X 720 nResolution := 11 ELSEIF nResHoriz = 1280 .AND. nResVert = 600 // 20 1280x600 0.01% nResolution := 20 ELSEIF nResHoriz = 1152 .AND. nResVert = 864 * 4 = 1152 X 864 nResolution := 4 ELSEIF nResHoriz = 1024 .AND. nResVert = 768 * 3 = 1024 X 768 nResolution := 3 ELSEIF nResHoriz = 800 .AND. nResVert = 600 * 2 = 800 X 600 nResolution := 2 ELSEIF nResHoriz = 768 .AND. nResVert = 1024 * 8 = 768 X 1024 nResolution := 8 ELSEIF nResHoriz = 720 .AND. nResVert = 480 // 21 720x480 3:2 NTSC 0.001% nResolution := 21 ELSEIF nResHoriz = 640 .AND. nResVert = 480 * 1 = 640 X 480 nResolution := 1 ENDIF RETURN( nResolution ) // END OF PROGRAM Regards, saludos. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 3, 2022 Author Report Share Posted September 3, 2022 Em windows 7 de 32 bits, o exemplo que pedi para testar funciona de boas, já no windows 10, dá crash(quebra), que mierda, viu? Seria ideal, pois eu usaria somente um diálogo: 1280 x 768 para todos os usuários, e ao sair do programa, voltava a RESOLUÇÃO DE TELA ORIGINAL do cliente. Se tem um Windows que eu não gosto, é esse Windows 10 do kralyious(). pohhha. kkkkkkkkkkkkkkk Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 3, 2022 Author Report Share Posted September 3, 2022 Eu acho que para funcionar em Windows 10, a Micr$oft, teria que mudar alguma coisa aqui: https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-changedisplaysettingsa Regards, saludos. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 4, 2022 Author Report Share Posted September 4, 2022 Agora a "briga" foi para o forum em inglês. Eu acho que o "Chinês" está me enrolando. kkkkkkkkkkkkkkkkkkkkk http://forums.fivetechsupport.com/viewtopic.php?f=3&t=41228&sid=f7177597dbec68af574f19f84a5e1875 Regards, saludos. Quote Link to comment Share on other sites More sharing options...
zekasan Posted September 12, 2022 Report Share Posted September 12, 2022 Estranho que não funcione para vc, nos meus programas não travam Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 13, 2022 Author Report Share Posted September 13, 2022 15 horas atrás, zekasan disse: Estranho que não funcione para vc, nos meus programas não travam Em Windows 10, você testou? Dá um "defeito" colateral. Abs. Regards, saludos. Quote Link to comment Share on other sites More sharing options...
Ariston Santos Posted September 16, 2022 Report Share Posted September 16, 2022 Será que os valores retornados na função abaixo server? //----------------------------------------------------------------------------// FUNCTION DLG_RESOLUCION( oDlg ) LOCAL aPor := {1,1},; nWidth := GetSysMetrics(0),; nHeight := GetSysMetrics(1) nTWid := WndWidth(FindWindow( 'Shell_TrayWnd',nil)) IF nTWid < nWidth // TrayBar position: Right or left nWidth -= nTWid ENDIF nThei := WndHeight(FindWindow( 'Shell_TrayWnd',nil)) IF nThei < nHeight // TrayBar position: Bottom or top nHeight -= nThei ENDIF nBwid := ((100/oDlg:nWidth)*nWidth)/100 nBhei := ((100/oDlg:nHeight)*nHeight)/100 aPor := {nBwid, nBhei} RETURN aPor Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 16, 2022 Author Report Share Posted September 16, 2022 Ariston, blz meu rei? Eu não quero o valor de GetSysMetrics(), eu quero, MUDAR a RESOLUÇÃO DE TELA em tempo real. Por exemplo: o usuário está com 1024 x 768, eu quero mudar para 1280 X 768 e ele vai trabalhar somente nesta resolução, ao sair, o programa "devolve" a resolução que ele estava, no caso, 1024 x 768, entende? O programa que eu postei acima, faz exatamente o que eu quero, no Windows 7, más no Windows 10, dá um efeito colateral indesejado, entende? Obg. abs. Regards, saludos. Quote Link to comment Share on other sites More sharing options...
Ariston Santos Posted September 16, 2022 Report Share Posted September 16, 2022 3 horas atrás, kapiaba disse: Ariston, blz meu rei? Eu não quero o valor de GetSysMetrics(), eu quero, MUDAR a RESOLUÇÃO DE TELA em tempo real. Por exemplo: o usuário está com 1024 x 768, eu quero mudar para 1280 X 768 e ele vai trabalhar somente nesta resolução, ao sair, o programa "devolve" a resolução que ele estava, no caso, 1024 x 768, entende? O programa que eu postei acima, faz exatamente o que eu quero, no Windows 7, más no Windows 10, dá um efeito colateral indesejado, entende? Obg. abs. Regards, saludos. Opa! Eu tinha entendido errado. Mas, desculpa minha ignorância, poderia me dizer por que precisa fazer isso? Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 16, 2022 Author Report Share Posted September 16, 2022 Preguiça, não quero criar várias telas , 1 para cada tipo de RESOLUÇÃO que o uçuário escolhe, entende? Más tudo bem. kkkkkkkk Obg. abs. Regards, saludos. Quote Link to comment Share on other sites More sharing options...
edutraini Posted September 16, 2022 Report Share Posted September 16, 2022 Kapi boa tarde Primeiramente vai curinthians eu achei isso aqui nas minhas rotinas ele muda a resolucao do programa e quando sai volta ao normal do windows // http://forums.fivetechsupport.com/viewtopic.php?f=6&t=9865&start=15 // By Marcelo Gomes e Yuri Marcelino #include 'fivewin.ch' #Include "dll.ch" #Include "Struct.ch" FUNCTION MAIN_reso() LOCAL nResoAncho := GetSysMetrics(0) IF nResoAncho > 800 CamReso ( 1024, 768 ) * MSGINFO('HECHO. AQUI PUEDES INICIAR TU PROGRAMA ELABORADO PARA 1024 X 768') ELSEIF nResoAncho <= 800 .AND. ISWINXP() CamReso ( 800, 600 ) ENDIF RETURN NIL FUNCTION CamReso(nAncho, nAlto) Local DM_PELSWIDTH := nHex("80000") Local DM_PELSHEIGHT := nHex("100000") Local oDevMode Local lPosible Local cBuffer Local lCamReso := .f. DEFAULT nAncho := GetSysMetrics(0), ; nAlto := GetSysMetrics(1) STRUCT oDevMode MEMBER cDevName AS STRING LEN 32 MEMBER nSpecVer AS WORD MEMBER nDrvVer AS WORD MEMBER nSize AS WORD MEMBER nDrvExtra AS WORD MEMBER nFields AS DWORD MEMBER nOrientat AS WORD MEMBER nPaperSiz AS WORD MEMBER nPaperLen AS WORD MEMBER nPaperWid AS WORD MEMBER nScale AS WORD MEMBER nCopies AS WORD MEMBER nDefSrc AS WORD MEMBER nPrnQlty AS WORD MEMBER nColor AS WORD MEMBER nDuplex AS WORD MEMBER nYResolut AS WORD MEMBER nTTOpt AS WORD MEMBER nCollate AS WORD MEMBER cFormName AS STRING LEN 32 MEMBER nUnusePad AS WORD MEMBER nBitsPPel AS DWORD MEMBER nPelWidth AS DWORD MEMBER nPelHeigh AS DWORD MEMBER nDisFlags AS DWORD MEMBER nDisFreq AS DWORD ENDSTRUCT cBuffer := oDevMode:cBuffer lPosible := EnumDisplaySettings(0, 0, @cBuffer) IF lPosible oDevMode:nFields := nOr(DM_PELSWIDTH, DM_PELSHEIGHT ) oDevMode:nPelWidth := nAncho oDevMode:nPelHeigh := nAlto cBuffer:=oDevMode:cBuffer TRY ChangeDisplaySettings(@cBuffer, 4) lCamReso := .T. CATCH MsgAlert("Modo no soportado", "Error" ) END else MsgAlert("Modo no soportado", "Error" ) endif return lCamReso DLL32 FUNCTION EnumDisplaySettings(lpszDeviceName AS DWORD,; iModeNum AS DWORD, ; @lpDevMode AS LPSTR) AS BOOL PASCAL; FROM "EnumDisplaySettingsA" LIB "User32.dll" DLL32 STATIC FUNCTION ChangeDisplaySettings(@lpDevMode AS LPSTR,; dwFlags AS DWORD) AS DWORD PASCAL; FROM "ChangeDisplaySettingsA" LIB "User32.dll" DLL32 FUNCTION ExitWindowsEx(uFlags AS DWORD,; dwReserved AS DWORD) AS DWORD PASCAL; LIB "user32.dll" DLL32 STATIC FUNCTION BlockInput( lTrava AS BOOL ) AS BOOL LIB "User32.DLL" Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 19, 2022 Author Report Share Posted September 19, 2022 Bom dia Edu, testou em WINDOWS 10? Obg. abs. Regards, saludos. Quote Link to comment Share on other sites More sharing options...
edutraini Posted September 19, 2022 Report Share Posted September 19, 2022 Quote Link to comment Share on other sites More sharing options...
edutraini Posted September 19, 2022 Report Share Posted September 19, 2022 13 minutos atrás, kapiaba disse: Bom dia Edu, testou em WINDOWS 10? Obg. abs. Regards, saludos. funciona perfeitamente Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 19, 2022 Author Report Share Posted September 19, 2022 18 minutos atrás, edutraini disse: funciona perfeitamente Estranho, eu tenho esta mesma função, e no forum inter reportaram que no windows 10, não funciona. O phoda, é que eu não tenho windows 10 para testar. Mesmo assim, muito obrigado. Regards, saludos. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 19, 2022 Author Report Share Posted September 19, 2022 Edu, teste agora com esta RESOLUCAO que eu uso no WORKSHOP.exe. EDU, SE VC. NAO TIVER ESTA RESOLUCAO, VEJA A QUE SE APROXIMA MAIS, PLS. // C:\FWH..\SAMPLES\CAMRESO.PRG /* Kapi boa tarde Primeiramente vai curinthians eu achei isso aqui nas minhas rotinas ele muda a resolucao do programa e quando sai volta ao normal do windows */ // http://forums.fivetechsupport.com/viewtopic.php?f=6&t=9865&start=15 // By Marcelo Gomes e Yuri Marcelino #include 'fivewin.ch' #Include "dll.ch" #Include "Struct.ch" FUNCTION MAIN_reso() LOCAL nResoAncho := GetSysMetrics(0) IF nResoAncho > 800 // EDU, SE VC. NAO TIVER ESTA RESOLUCAO, VEJA A QUE SE APROXIMA MAIS, PLS. CamReso ( 1280, 768 ) MSGINFO('HECHO. AQUI PUEDES INICIAR TU PROGRAMA ELABORADO PARA 1280 X 768') ELSEIF nResoAncho <= 800 .AND. ISWINXP() CamReso ( 800, 600 ) ENDIF RETURN NIL FUNCTION CamReso(nAncho, nAlto) Local DM_PELSWIDTH := nHex("80000") Local DM_PELSHEIGHT := nHex("100000") Local oDevMode Local lPosible Local cBuffer Local lCamReso := .f. DEFAULT nAncho := GetSysMetrics(0), ; nAlto := GetSysMetrics(1) STRUCT oDevMode MEMBER cDevName AS STRING LEN 32 MEMBER nSpecVer AS WORD MEMBER nDrvVer AS WORD MEMBER nSize AS WORD MEMBER nDrvExtra AS WORD MEMBER nFields AS DWORD MEMBER nOrientat AS WORD MEMBER nPaperSiz AS WORD MEMBER nPaperLen AS WORD MEMBER nPaperWid AS WORD MEMBER nScale AS WORD MEMBER nCopies AS WORD MEMBER nDefSrc AS WORD MEMBER nPrnQlty AS WORD MEMBER nColor AS WORD MEMBER nDuplex AS WORD MEMBER nYResolut AS WORD MEMBER nTTOpt AS WORD MEMBER nCollate AS WORD MEMBER cFormName AS STRING LEN 32 MEMBER nUnusePad AS WORD MEMBER nBitsPPel AS DWORD MEMBER nPelWidth AS DWORD MEMBER nPelHeigh AS DWORD MEMBER nDisFlags AS DWORD MEMBER nDisFreq AS DWORD ENDSTRUCT cBuffer := oDevMode:cBuffer lPosible := EnumDisplaySettings(0, 0, @cBuffer) IF lPosible oDevMode:nFields := nOr(DM_PELSWIDTH, DM_PELSHEIGHT ) oDevMode:nPelWidth := nAncho oDevMode:nPelHeigh := nAlto cBuffer:=oDevMode:cBuffer TRY ChangeDisplaySettings(@cBuffer, 4) lCamReso := .T. CATCH MsgAlert("Modo no soportado", "Error" ) END ELSE MsgAlert("Modo no soportado", "Error" ) ENDIF RETURN( lCamReso ) DLL32 FUNCTION EnumDisplaySettings(lpszDeviceName AS DWORD,; iModeNum AS DWORD, ; @lpDevMode AS LPSTR) AS BOOL PASCAL; FROM "EnumDisplaySettingsA" LIB "User32.dll" DLL32 STATIC FUNCTION ChangeDisplaySettings(@lpDevMode AS LPSTR,; dwFlags AS DWORD) AS DWORD PASCAL; FROM "ChangeDisplaySettingsA" LIB "User32.dll" DLL32 FUNCTION ExitWindowsEx(uFlags AS DWORD,; dwReserved AS DWORD) AS DWORD PASCAL; LIB "user32.dll" DLL32 STATIC FUNCTION BlockInput( lTrava AS BOOL ) AS BOOL LIB "User32.DLL" // FIN / END Regards, saludos. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.