0
Rotina para trazer qualquer window para 1º plano.
Tive que fazer esta rotina, pois quando imprimia para PDF ou exportava para Excel, ficava apenas a indicação na barra em baixo a piscar e tinha que fazer um click com o rato para abrir.COBOL Código:
@OPTIONS NOALPHA IDENTIFICATION DIVISION. PROGRAM-ID. WINDOWONTOP. ENVIRONMENT DIVISION. CONFIGURATION SECTION. REPOSITORY. DATA DIVISION. WORKING-STORAGE SECTION. 01 OLE-TRUE PIC 1(1) BIT VALUE B"1". 01 FILLER PIC 1(7) BIT. 01 OLE-FALSE PIC 1(1) BIT VALUE B"0". 01 FILLER PIC 1(7) BIT. 01 S-INDEX PIC S9(4) COMP-5 VALUE 0. 01 CONTALOOP PIC S9(9) COMP-5. 01 MILISECONDS PIC S9(9) COMP-5 VALUE 0. 01 WINDOWCLASSE BINARY-LONG VALUE ZERO. 01 HWND BINARY-LONG. 01 SECONDS PIC S9(9) COMP-5. LINKAGE SECTION. 01 WINDOWNAME PIC X(064). PROCEDURE DIVISION USING WINDOWNAME. MAIN SECTION. MAIN-00. IF WINDOWNAME = SPACE GO TO MAIN-99. MOVE 40 TO SECONDS. COMPUTE S-INDEX = FUNCTION STORED-CHAR-LENGTH(WINDOWNAME). ADD 1 TO S-INDEX. MOVE X"00" TO WINDOWNAME(S-INDEX:1). * DISPLAY WINDOWNAME. STOP " ". MOVE ZERO TO CONTALOOP. * MAIN-10. CALL "FindWindowA" WITH STDCALL USING BY VALUE WINDOWCLASSE BY REFERENCE WINDOWNAME RETURNING HWND. IF HWND > 0 GO TO MAIN-20. IF CONTALOOP > SECONDS GO TO MAIN-99. MOVE 500 TO MILISECONDS. CALL "Sleep" WITH STDCALL USING BY VALUE MILISECONDS. ADD 1 TO CONTALOOP. GO TO MAIN-10. MAIN-20. CALL "SetForegroundWindow" WITH STDCALL USING BY VALUE HWND. * MAIN-99. END PROGRAM WINDOWONTOP.
Basta passar o nome correto da "Window" e esta fica em primeiro plano sobre todas as outras.
A utilização de "Sleep" tem a ver com o tempo de criação do PDF ou da Folha de Excel.
Espero que sirva para alguém.
Saludos,
Rui Pinto
Marcadores