If you're running W4+, first see if this "built-in" method works for you. This is from the README.TXT from WSeB's installation diskette:
2.1.10 OS/2 Window Default Size and Position -------------------------------------------- In OS/2 Warp 4.0 and later versions, an OS/2 Window opens to a default size and position. If you run customized applications that require the window to open to a specific size and position, you can remove these defaults. To remove the default window size and position: 1. Open an OS/2 command window. 2. Move the mouse pointer to the restore icon in the upper right corner of the window. 3. Press and hold the Shift key and right-click the restore icon. 4. Release the Shift key. |
It can't be the easy way, but here's how we're doing it: Move_it/Switchto/Console
I'm taking these notes to aid me Next Time!
I keep thinking that there must be an easier way, but I've not been able to find one, so I put these utils together to do the task. The problem: many of my boxen need to have several tasks started at every boot, and the windows take up real estate, and won't go where I want them automatically, or have to be manually resized. The tools I use to get this to happen are:
REXX/2, ships with OS/2
OS/2 CMD.EXE START, ships with OS/2
Console.exe, by Andrew
Pavel Zabolotny, GPL freeware
WMoves.exe, by Benno
Sauer, shareware, $24
Move_it.exe, by Benno
Sauer, shareware, $24
Switchto.exe, by Roman
Stangl, freeware
START has a number of parameters that can be used to start an app in a window or minimized, as well as full screen. Various session parameters can be utilized to allow the app to be started detached or with its own command processor.
Move_it.exe reads an ini file, and can reposition a list of running apps to your predifined format. It can't resize a window directly, though it comes with a utility, Fontset, that allows custom window font sizes.
WMoves.exe is a PM ini-file builder for Move_it.
Console.exe does what Move_it.exe does, but only one app at a time, and it has to be run IN each app's window, so it's less useful, but it can resize the window it's in. Handy to run before an app: start a windowed session, run Console.exe to resize it (and optionally set its position), then start the app. Move_it.exe can manage a whole list of window positions, so it's easier to allow Move_it.exe to handle ALL windows than to try to maintain individual windows via Console.exe.
Switchto.exe can put a predetermined window into the foreground, to take advantage of the greater priority boost that a foreground task enjoys.
In the following examples:
All *.CMD files are located in x:\BELFRY
Startup.cmd is shadowed
in the OS/2 Startup folder.
Apache.cmd starts up Apache/2,
while waiting for network connections to finish.
StartftpServer.cmd starts
up ftpServer, by Peter Moylan.
/* Startup.cmd
Date Created: 11-Mar-00 ALS
Date Revised: 26-Mar-00 ALS
Starts up all normal bootup user tasks on this computer
*/
/* Load utilities */
CALL RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
CALL SysLoadFuncs
START "/WIN /MIN /C ""ZTBold"" /PGM C:\ZTB\ZTB /XT /ZP"
START "/N /B ""Vmodem by Ray Guinn"" C:\SIO\VMODEM.EXE"
CALL SYSSLEEP 3
CALL DIRECTORY "C:\BELFRY"
START "/WIN /DOS /B NODE4.BAT"
CALL SYSSLEEP 3
START "/WIN /DOS /B NODE5.BAT"
CALL SYSSLEEP 3
START "/WIN /DOS /B NODE7.BAT"
/* Next line is for the REXX startup version. Do not use with
CONSOLE.EXE.
START " /B ""ftpServer"" /PGM C:\BELFRY\StartftpServer.cmd"
*/
START "/WIN /B /C /PGM C:\BELFRY\StartftpServer.cmd"
START "/WIN /B /C ""Apache/2 WebServer"" /PGM C:\BELFRY\APACHE.CMD D:\APACHE D:\APACHE\SRC"
/* Give the CONSOLE.EXE sessions enough time to do their stuff before
letting
Move_It move them */
CALL SYSSLEEP 2
START "/WIN /B /C ""Move_It"" /PGM C:\WMOVES\MOVE_IT C:\WMOVES\1.WMO"
/* SWITCHTO.EXE switches, to the foreground, a process which can be
listed
on the <Ctrl-Esc> Window List. Process name MUST be spelled
correctly! */
SWITCHTO.EXE """Apache/2 WebServer"""
EXIT
/* APACHE.CMD
*/
/* Creation date: 06-Sep-99 ALS */
/* Revision date: 26-Mar-00 ALS */
/* Procedure to delay the startup of Apache until logon to the server
and
mapping of shared resources has occurred. This is necessary
for two
reasons: OS/2 logon and resource mapping requires about 40 seconds
on a
test box, and Apache/2 v1.3.6 will shut down immediately if it
cannot find
the content directory. */
/* Input:
Name of Apache/2 'root' directory;
Name of Apache/2 daemon exe directory;
(optionally)
Name of Apache/2 daemon file
*/
/* Dependencies:
C:\CONSOLE\CONSOLE.EXE to resize the client window.
(but it will still start Apache/2 OK, if CONSOLE.EXE is not found)
*/
/*****************************************
vars definitions
ApacheRootDir = Name of Apache/2 'root'
directory
ApacheExeFileLoc = Name of Apache/2 daemon exe directory
ApacheExeFileName = Name of Apache/2 deamon exe
ConsoleExeFileLoc = Name of CONSOLE.EXE exe directory
ConsoleExeFileName = Name of CONSOLE.EXE name
ConsoleWidth = Width of resized
CMD window, in pixels
ConsoleHeight = Height of resized CMD
window, in pixels
arg.1
arg.2
arg.3 Command line input parameters
row
column Cursor positioning vars
Counter Attempts at changing drive/directory
counter var
CurDir holds temporary return value to
compare current directory with
reset directory attempt(s)
rc generic return
code var
MaxCount Maximum number of retry attempts
*****************************************/
/* Global variables */
MaxCount = 360 /* three minumtes default */
ConsoleExeFileLoc = "C:\CONSOLE"
ConsoleExeFileName = "CONSOLE.EXE"
ConsoleWidth = 550
ConsoleHeight = 175
/* Load utilities */
CALL RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
CALL SysLoadFuncs
Main:
/* parse the command line arguments */
PARSE ARG arg.1 arg.2 arg.3
IF (ARG() = 0) THEN
CALL Usage "(ALL of them!)"
ELSE
IF (LENGTH(arg.1) < 1) THEN
CALL Usage 1
ELSE
IF (LENGTH(arg.2) < 1) THEN
CALL Usage 2
ELSE
IF (LENGTH(arg.3)
< 1) THEN
ApacheExeFileName = 'httpd.exe'
ELSE
ApacheExeFileName = arg.3
ApacheRootDir = arg.1
ApacheExeFileLoc = arg.2
/* convert any forward slashes to backslash */
ApacheRootDir = TRANSLATE(ApacheRootDir,'\','/')
ApacheExeFileLoc = TRANSLATE(ApacheExeFileLoc,'\','/')
/* remove trailing backslash */
IF (SUBSTR(ApacheExeFileLoc,LENGTH(ApacheExeFileLoc),1)='\') THEN
ApacheExeFileLoc = SUBSTR(ApacheExeFileLoc,1,LENGTH(ApacheExeFileLoc)-1)
/* move cursor one line down, so the following text is not obscured
by the,
"OS/2 Ctrl+Esc = Window List
Type HELP = help" line later */
/* resize window */
CurDir = DIRECTORY(ConsoleExeFileLoc)
IF (TRANSLATE(CurDir) = TRANSLATE(ConsoleExeFileLoc)) THEN
/* if it was, then check that the target
file exists */
DO
rc = SysFileTree(ConsoleExeFileName,Found,FO,,)
IF ( Found.0 <> 0) THEN
/* file found,
run Console */
ConsoleExeFileLoc"\"ConsoleExeFileName"
-p,,"ConsoleWidth","ConsoleHeight" -oa"
ELSE
/* error: file
not found */
DO
SAY
SAY "Directory """||ConsoleExeFileLoc||""" was found successfully, but
the "
SAY "file, """||ConsoleExeFileName||""", was not found."
RETURN
END /* ELSE
*/
END /* IF (Found.0 <> 0) */
ELSE
/* Directory not found */
SAY "Directory """||ConsoleExeFileLoc||""" was not found."
SAY
/* place explanatory text */
CALL CHAROUT STDOUT,"Attempting to find "|| ApacheExeFileLoc || "\"
|| ApacheExeFileName
SAY
CALL CHAROUT STDOUT,"Attempt No. 1"
PARSE VALUE SysCurPos() WITH Row Column
Column = Column -1
Counter = 1
CurDir = DIRECTORY()
DO WHILE (CurDir <> ApacheExeFileLoc)
IF (Counter = MaxCount) THEN
CALL Exit1
CurDir = DIRECTORY(ApacheExeFileLoc)
/* check to see if the drive/directory was successfully
changed to */
IF (TRANSLATE(CurDir) = TRANSLATE(ApacheExeFileLoc))
THEN
/* if it was, then check that the target
file exists */
DO
rc = SysFileTree(ApacheExeFileName,Found,FO,,)
IF ( Found.0 <> 0) THEN
/* file found,
move along */
LEAVE
ELSE
/* error: file
not found */
DO
SAY
SAY "Directory """||ApacheExeFileLoc||""" was found successfully, but the
"
SAY "file, """||ApacheExeFileName||""", was not found."
RETURN
END /* ELSE
*/
END /* IF (Found.0 <> 0) */
call SysSleep 1
CALL SysCurPos Row, Column
CALL CHAROUT STDOUT, Counter
Counter = Counter + 1
End /* DO WHILE (CurDir <> ApacheExeFileLoc) */
/* start the program */
SAY
SAY
SAY "Starting program on "||DATE()||" "TIME()
/* START "/N "||"""Apache/2 v2.0 beta, WebServer"" /PGM "||ApacheExeFileLoc||"\"ApacheExeFileName||"
-d "||ApacheRootDir
*/
ApacheExeFileLoc||"\"ApacheExeFileName||" -d "||ApacheRootDir
EXIT
Usage:
PROCEDURE
SAY "Error: argument "ARG(1)" missing."
SAY
SAY "Usage: APACHE rootdir fileloc [filename]"
SAY "where"
SAY "rootdir = the Apache/2 program ""root"" directory"
SAY "fileloc = the directory where the Apache/2 daemon
resides (typically named"
SAY "
httpd.exe)"
SAY
SAY "(optionally, if the Apache/2 daemon is not ""httpd.exe"")"
SAY "filename = file name of the Apache/2 daemon."
SAY "
The filename extension is required."
SAY
SAY "Example: APACHE d:\Apache d:\apache\bin webserver.exe"
EXIT /* end Usage: and end program */
Exit1:
PROCEDURE
SAY
SAY "Maximum number of retries has occurred . . . exiting."
SAY
EXIT /* end Exit1: and end program */
rem **********************************
rem STARTftpServer.cmd
rem Created: 26-Mar-00 ALS
rem Starts up ftpServer with notes in the title bar on how to properly
shut it down
rem
rem This version is for use with CONSOLE.EXE, which will properly size
rem a CMD.EXE window.
rem **********************************
rem For some reason, Warp4 w/LS installed over it, requires that I CD
to \console and *then*
rem run CONSOLE.EXE. Console will run but will not do anything,
if run on a pathed command line.
cd \console
CONSOLE.EXE -p,,610,135 -t"ftpServer: Press 'G' for Gradual shutdown,
'Q' for Quick"
c:\ftpserver\ftpd.exe
rem EXIT is needed to close this window.
exit