#COMPILE EXE #DIM ALL #INCLUDE ONCE "DosPrint.inc" #INCLUDE ONCE "FindDialog.inc" $CLI = "set-dlg-loc" $ARG1 = "(x,y) ""dialog caption, all or part""" $ARG2 = "(x,y) #12345 (hash followed by dialog handle)" $NFO = "Use x or y = -1 to center and -2 to right/bottom align" FUNCTION PBMAIN () AS LONG LOCAL dlgList() AS STRING LOCAL nbDlg AS LONG LOCAL x, y AS LONG LOCAL dw, dh, w, h AS LONG LOCAL inTxt AS STRING LOCAL hD AS DWORD LOCAL caption AS STRING IF COMMAND$ = "" THEN CALL FreeConsole() ' Win32 mode -> hide console ?"This utility must be called via the command-line."+$CR+$CR _ +"Usage:" + $CR + $CLI + $SPC + $ARG1 + $CR _ +"or " + $CR + $CLI + $SPC + $ARG2 + $CR+$CR _ +$NFO, %MB_ICONINFORMATION, $CLI EXIT FUNCTION END IF IF COMMAND$ = "/?" THEN DosPrint "Usage: " + $CLI + $SPC + $ARG1 DosPrint " or " + $CLI + $SPC + $ARG2 DosPrint $NFO EXIT FUNCTION END IF ' Parse first parameter (x,y) inTxt = TRIM$(COMMAND$(1)) IF LEFT$(inTxt,1) <> "(" THEN GOTO BadArg inTxt = MID$(inTxt,2) IF RIGHT$(inTxt,1) <> ")" THEN GOTO BadArg inTxt = LEFT$(inTxt,-1) IF INSTR(inTxt,",") = 0 THEN GOTO BadArg x = VAL(LEFT$(inTxt, INSTR(inTxt,",")-1)) y = VAL(MID$(inTxt, INSTR(inTxt,",")+1)) ' Parse second parameter dialog identifier inTxt = TRIM$(COMMAND$(2), ANY $SPC+$TAB+$DQ) ' Find all dialogs based on inTxt REDIM dlgList(0) IF LEFT$(inTxt, 1) = "#" THEN nbDlg = FindDialog("HND:" + MID$(inTxt,2), BYREF dlgList()) ELSE nbDlg = FindDialog("CAP:" + inTxt, BYREF dlgList()) END IF ' No dialog found IF nbDlg = 0 THEN DosPrint "No dialog found." EXIT FUNCTION END IF ' More than 1 dialog found IF nbDlg > 1 THEN DosPrint "Several dialogs found, please specify which one to take:" FOR x = 1 TO nbDlg DosPrint " " + dlgList(x-1) NEXT EXIT FUNCTION END IF ' Just 1 dialog found > get its information hD = VAL(MID$(dlgList(0),2)) caption = MID$(dlgList(0), INSTR(dlgList(0),":")+1) ' Special case of (x,y) DESKTOP GET CLIENT TO dw, dh ' desktop width & height DIALOG GET SIZE hD TO w, h ' dialog width & height IF x = -1 THEN x = (dw - w) \ 2 ' centered horizontally IF y = -1 THEN y = (dh - h) \ 2 ' centered vertically IF x = -2 THEN x = dw - w ' right-aligned IF y = -2 THEN y = dh - h ' bottom-aligned ' Set loc! DIALOG SET LOC hD, x, y DosPrint "Dialog found: #"+FORMAT$(hD)+$SPC+$DQ+caption+$DQ DosPrint "Location set to ("+FORMAT$(x)+","+FORMAT$(y)+")" EXIT FUNCTION BadArg: DosPrint "Syntax Error." DosPrint "Usage: " + $CLI + $SPC + $ARG1 DosPrint " or " + $CLI + $SPC + $ARG2 END FUNCTION