|
Home Page |
About ToolBook |
ToolBook Tips |
ToolBook Projects |
ToolBook Links |
Guest Book |
|
How to run Internet browser from ToolBook (or run any program with document)
Internet browsers can be executed with an URL as a parameter. For example:
iexplore.exe "https://cbook.ru"
or
netscape.exe "https://cbook.ru"
or may be some other browsers
There are no problems if you know exact path of browser,
but you can't know it if your program must work on different computers.
So main problem is how to find browser name and path.
First variant: Scan all disks and directories for browser names (iexplore.exe or netscape.exe).
Standard searching algorithm with recursion can be simply realized in Delphi or C++ but not in ToolBook
because of a lot of iterations and a lot of nesting calls.
Second variant: Find executable file associated with "htm" extension.
To do it you need a "FindExecutable" function from "shell.dll".
to handle buttonClick
linkDll "shell.dll"
WORD FindExecutable(STRING,STRING,POINTER)
end
linkDLL "tb40win.dll"
POINTER getMemBlock(DWORD)
WORD freeMemBlock(POINTER)
end linkDLL
-- ATTENTION!!!
-- This script works on Windows 3.1, Windows 95 and Windows 98,
-- but it doesn't work on Windows NT because
-- function FindExecutable returns full long name of executable file instead of DOS name
-- and operator "run" can't work with long names
-- (This script was tested in ToolBook 4)
myParameter = "https://cbook.ru"
sysCursor = 4
lpBuffer = getMemBlock(256)
if lpBuffer = NULL
break
end
myErrorText = "Internet browser not found." & CRLF & \
"If Internet browser is installed in your system, associate extension" && \
QUOTE & "*.htm" & QUOTE && "with your browser and try once more."
-- Determine current path
myPath = name of this book
while last char of myPath <> "\"
clear last char of myPath
end while
status = FindExecutable("blank.htm",myPath,lpBuffer)
-- "blank.htm" must be real file in directory myPath (In that example I assume that myPath is application path)
if status <= 32 -- associated file not found
request myErrorText
break
end
myExe = pointerString(0,lpBuffer) -- Browser name with full path
get freeMemBlock(lpBuffer)
clear sysError
run (myExe && myParameter)
if sysError <> null
request myErrorText
end if
sysCursor = default
end
-- P.S. The same method is used to run any program with document as parameter:
-- Word with *.doc, Adobe Acrobat Reader with *.pdf, etc.
|