Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

JScript - is a file of a known Type?

60 views
Skip to first unread message

Dr J R Stockton

unread,
Jan 3, 2012, 12:09:48 PM1/3/12
to

In Windows Script Host, given a File Object with properties including
Name and Type, is there a direct guaranteed infallible way in
JScript/VBScript to find whether the file is a known Type?

Examples :

FILENAME TYPE KNOWN

LONGFILENAME.HTML Firefox Document Yes
SEAKFYLE.OK6 OK6 File No
SEAKFYLE.ZIP Compressed (zipped) Folder Yes
SEEK.$$$ $$$ File No
SEEK.BAT MS-DOS Batch File Yes
SEEK.VBS VBScript Script File Yes

For those, it suffices to test, case-dependently, whether the Extension
appears as a word in the Type : if it does not do so, then the file must
be a known Type. But the converse is only reliable if one can be sure
that a known extension cannot ever, in any natural language, occur as a
word in the corresponding Type string.

Consider the possibility of a default browser being called "View Your
HTML", for example - unlikely, but possible. Or that of a file with
extension "File".

The application is SEAKFYLE, via
<http://www.merlyn.demon.co.uk/programs/32-bit/00index.htm>, using
Options X3 and X4. The current code is in a paragraph currently starting
at Line 281 :

if (Eggs == 3 || Eggs == 4) { S = Item.Path
S = S.substring(S.lastIndexOf(".") + 1) // Extn
if (Eggs == 4 ^ new RegExp("\\b"+S+"\\b").test(Item.Type)) return }

Eggs 3 returns for unknown types; Eggs 4 for known ones. In JScript,
the token ^ means "Exclusive-Or".

--
(c) John Stockton, nr London UK. ?@merlyn.demon.co.uk DOS 3.3, 6.20; WinXP.
Web <http://www.merlyn.demon.co.uk/> - FAQqish topics, acronyms and links.
PAS EXE TXT ZIP via <http://www.merlyn.demon.co.uk/programs/00index.htm>
My DOS <http://www.merlyn.demon.co.uk/batfiles.htm> - also batprogs.htm.

Mayayana

unread,
Jan 3, 2012, 9:13:05 PM1/3/12
to
I'm not sure I understand. Do you mean you want to
find out if it's a registered file type? That would be
in HKCR. If OK6 is registered there will be a key
HKCR\.ok6


--
--
"Dr J R Stockton" <repl...@merlyn.demon.co.uk> wrote in message
news:3wJilUEc...@invalid.uk.co.demon.merlyn.invalid...

Todd Vargo

unread,
Jan 4, 2012, 12:55:58 AM1/4/12
to
On 1/3/2012 9:13 PM, Mayayana wrote:
> I'm not sure I understand. Do you mean you want to
> find out if it's a registered file type? That would be
> in HKCR. If OK6 is registered there will be a key
> HKCR\.ok6

Correct. However getting the string for the file type requires a bit
more effort. Some extensions have their type in the default string.
While others provide the name to another key where the real string must
be read.

For example, on my system the default string for .bmp is Paint.Picture
which you then find there is an Paint.Picture key where you find the
file type is "Bitmap Image".

And some, like .x, store the type in a string named "PerceivedType".

--
Todd Vargo
(Post questions to group only. Remove "z" to email personal messages)

Mayayana

unread,
Jan 4, 2012, 9:18:17 AM1/4/12
to

I'm still not sure I get what Dr J R Stockton is after,
but the Registry system is straightforward.

HKCR\.txt default value: "txtfile"
HKCR\txtfile default value: "Text Document"

PerceivedType is not related to file registration. According
to MS it's actually meant to be used with Windows
Find/Search.
http://msdn.microsoft.com/en-us/library/aa965719%28v=vs.85%29.aspx

Unless someone is building a shell view I don't see the
point of needing the file type's class name. The only need for
that in the first place is so that the way of looking up files
can work despite changes: If Firefox takes over .html from IE,
or IE changes it back, the current status can still be tracked
via HKCR\.html.

The existence of HKCR\.txt confirms that it's a registered type.
The HKCR\[extension key default value] (HKCR\txtfile\) subkeys
then provide other information, like icon, default program for
that file type, etc.

I see what you mean about .x. I wonder how such a key got
written in the first place. It doesn't have any purpose that I
can see. I have very few of those in my Registry. The only
thing I can guess is that some uninstallers remove the default
value for a program's extensions during uninstall but don't
remove the extension key itself.

In any case, it doesn't change the design. "Text" is
not a registered file type. .x is not really registered. So I
guess I should amend what I said above: To be thorough
one should confirm there's a default program for a file type,
under:
HKCR\[extension key default value]\shell\open\command\

That gets back to why anyone cares about the registered
file type name in the first place. Usually the point of looking
up this info. is to find the default program.


--
--
"Todd Vargo" <tlv...@sbcglobal.netz> wrote in message
news:je0plc$u6g$1...@news.albasani.net...

Dave "Crash" Dummy

unread,
Jan 4, 2012, 9:40:15 AM1/4/12
to
The trouble with "file type" as stored in the registry and read by
"objFile.type" is that it can be and often is changed by applications. For
example, on my computer the ".bmp" file mentioned above is a "Paint Shop
Pro 5 Image," not a "Paint.Picture."
--
Crash

Today is the first day of the rest of your life, and there's not a
damned thing you can do about it.

Mayayana

unread,
Jan 4, 2012, 10:23:00 AM1/4/12
to
|
| The trouble with "file type" as stored in the registry and read by
| "objFile.type" is that it can be and often is changed by applications. For
| example, on my computer the ".bmp" file mentioned above is a "Paint Shop
| Pro 5 Image," not a "Paint.Picture."

Yes, but that's the whole point. That name is only
a pointer to the Registry key that holds the relevant info.
about a registered file, such as the path to the default
program to open it. The file class name itself is not
significant. It's a pointer.

I guess a distinction should be made between the
two "file type" values. I've never used objFile.type
and don't see any point to it, so I'm not sure what
it shows.

I'll call the default value of HKCR\.xxx the file class
name. (I don't know if there's an official term.) I'll call
the default value of HKCR\[FileClassName] the file type
name. So:

HKCR\.txt default value: txtfile
HKCR\txtfile default value: Text Document

Any program that gets assigned as the default for a
file type can set any values it wants. Those values are
really only for Registry navigation and advertising. (Since
most software is commercial one often gets commercial
names.) For .bmp I have a file class name of "IrfanView.BMP"
and a file type name of "IrfanView BMP File". Neither of
those names tells me anything about what a BMP file is.
If I wanted a script to provide useful information about
file types, perhaps in an HTA, I think I'd write a function
to return strings like "text file", "cascading style sheet file",
"webpage file", etc. There simply isn't any standard like
that in Windows.


Todd Vargo

unread,
Jan 4, 2012, 8:22:37 PM1/4/12
to
I know what you mean. It drives me nuts when installers hijack
registered file associations without warning. It has gotten better over
the years with installers offering the option to select or exclude
taking over existing extensions. I have added many custom keys over the
years to select from several apps with special parameters for particular
extensions. So when these misbehaved installers hijack one of these on
me, you know I'm not a happy camper.

Dr J R Stockton

unread,
Jan 5, 2012, 3:29:40 PM1/5/12
to
In comp.lang.javascript message <je1ocf$e6m$1...@dont-email.me>, Wed, 4 Jan
2012 09:40:15, "Dave \"Crash\" Dummy" <inv...@invalid.invalid> posted:

>
>The trouble with "file type" as stored in the registry and read by
>"objFile.type" is that it can be and often is changed by applications. For
>example, on my computer the ".bmp" file mentioned above is a "Paint
>Shop
>Pro 5 Image," not a "Paint.Picture."

The fact that the Type string can be changed provides a good reason for
having a convenient way to read the Type string.

Typically, MS make it harder to tell by code whether a file's Type is
known or not by putting an uninformative but readable string where they
could more easily have put an empty string or a recognisable language-
independent one such as "-".

No-one has actually answered the question.



Let's try another.

The CScript in question is started from the DOS-box command-line and
writes lines to the screen - it would run perfectly well on an ASR33
teletype. At present, if started in WScript, it exits leaving a small
note.

It would be nice to allow execution by WScript, with GUI output; but, to
be worth doing, it would be necessary for there to be an easy way of
creating and writing (line by line) to something resembling an HTML
textarea. Is that available, and if so how is it done or where do I
need to look?


--
(c) John Stockton, nr London UK. ?@merlyn.demon.co.uk DOS 3.3 6.20 ; WinXP.
Web <http://www.merlyn.demon.co.uk/> - FAQqish topics, acronyms & links.

Michael Haufe (TNO)

unread,
Jan 6, 2012, 1:01:48 AM1/6/12
to
On Jan 3, 11:09 am, Dr J R Stockton <reply1...@merlyn.demon.co.uk>
wrote:
> In Windows Script Host, given a File Object with properties including
> Name and Type, is there a direct guaranteed infallible way in
> JScript/VBScript to find whether the file is a known Type?

Generally not as there is not a bijection between the TYPE and its
registry entry. One would have to use the file extension as a key to
lookup the existence of an entry to get more accurate results.

> Examples :
>
> FILENAME TYPE KNOWN
>
> LONGFILENAME.HTML Firefox Document Yes
> SEAKFYLE.OK6 OK6 File No
> SEAKFYLE.ZIP Compressed (zipped) Folder Yes
> SEEK.$$$ $$$ File No
> SEEK.BAT MS-DOS Batch File Yes
> SEEK.VBS VBScript Script File Yes

Here is some code that creates a similar result on my machine:

<https://gist.github.com/1569247>

Michael Haufe (TNO)

unread,
Jan 6, 2012, 1:05:53 AM1/6/12
to
On Jan 5, 2:29 pm, Dr J R Stockton <reply1...@merlyn.demon.co.uk>
wrote:

> The CScript in question is started from the DOS-box command-line and
> writes lines to the screen - it would run perfectly well on an ASR33
> teletype.  At present, if started in WScript, it exits leaving a small
> note.
>
> It would be nice to allow execution by WScript, with GUI output; but, to
> be worth doing, it would be necessary for there to be an easy way of
> creating and writing (line by line) to something resembling an HTML
> textarea.  Is that available, and if so how is it done or where do I
> need to look?

Are you looking for a formatted table output in the command window in
a way similar to your original example?

Bwig Zomberi

unread,
Jan 6, 2012, 4:01:26 AM1/6/12
to
Michael Haufe (TNO) wrote:
> On Jan 5, 2:29 pm, Dr J R Stockton<reply1...@merlyn.demon.co.uk>
> wrote:
>
>> The CScript in question is started from the DOS-box command-line and
>> writes lines to the screen - it would run perfectly well on an ASR33
>> teletype. At present, if started in WScript, it exits leaving a small
>> note.

Are you looking for the /nologo parameter to cscript?


--
Bwig Zomberi

Bwig Zomberi

unread,
Jan 6, 2012, 4:13:19 AM1/6/12
to
Dr J R Stockton wrote:
> Typically, MS make it harder to tell by code whether a file's Type is
> known or not by putting an uninformative but readable string where they
> could more easily have put an empty string or a recognisable language-
> independent one such as "-".

When Windows and programs are installed files types are created. Some
applications hijacks extensions. They keep it meaningful or give it all
a same name. The logic is still the same - what Mayayana has stated. If
it is in the registry, it is a known file type. Otherwise, it is
unknown.

--
Bwig Zomberi

Todd Vargo

unread,
Jan 6, 2012, 5:20:52 AM1/6/12
to
On 1/5/2012 3:29 PM, Dr J R Stockton wrote:
> In comp.lang.javascript message<je1ocf$e6m$1...@dont-email.me>, Wed, 4 Jan
> 2012 09:40:15, "Dave \"Crash\" Dummy"<inv...@invalid.invalid> posted:
>
>>
>> The trouble with "file type" as stored in the registry and read by
>> "objFile.type" is that it can be and often is changed by applications. For
>> example, on my computer the ".bmp" file mentioned above is a "Paint
>> Shop
>> Pro 5 Image," not a "Paint.Picture."
>
> The fact that the Type string can be changed provides a good reason for
> having a convenient way to read the Type string.
>
> Typically, MS make it harder to tell by code whether a file's Type is
> known or not by putting an uninformative but readable string where they
> could more easily have put an empty string or a recognisable language-
> independent one such as "-".
>
> No-one has actually answered the question.

Your question was malformed. It did not request to provide code to
demonstrate a different method from the one you previously chose. As
indicated, your answer can be found in HKCR but effort on your part is
necessary to capture it.


> Let's try another.
>
> The CScript in question is started from the DOS-box command-line and
> writes lines to the screen - it would run perfectly well on an ASR33
> teletype. At present, if started in WScript, it exits leaving a small
> note.
>
> It would be nice to allow execution by WScript, with GUI output; but, to
> be worth doing, it would be necessary for there to be an easy way of
> creating and writing (line by line) to something resembling an HTML
> textarea. Is that available, and if so how is it done or where do I
> need to look?

Not even going to attempt to research it on your own?
Watch for the line wraps...

'''''' Creates an Internet Explorer instance to display VBScript output
''''''
'On Error Resume Next

Set WshShell = WScript.CreateObject("WScript.Shell")
Set objExplorer = Wscript.CreateObject("InternetExplorer.Application",
"IE_")

objExplorer.Navigate "about:blank"
objExplorer.ToolBar = False
objExplorer.StatusBar = False
objExplorer.Top = 180
objExplorer.Left = 200
objExplorer.Width = 630
objExplorer.Height = 320
objExplorer.Visible = True
objExplorer.Resizable = False

Do While (objExplorer.Busy) 'Wait for Iexplore instance to load
Wscript.Sleep 250
Loop

With objExplorer.Document
.Writeln "<html><head><title></title></head><body>"
.Title = Wscript.ScriptName & " is running... "

.body.style.cursor = "Wait"
.Writeln "<img
src=""http://www.merlyn.demon.co.uk/graphics/merlyn-1.gif"">"
.Writeln "<p class=""style2""><B>Please wait while APPLICATION is
loading...</B></p>"

For x = 1 to 25
.Writeln "Line..." & x & "<br>"
WScript.Sleep(50) 'Pause 50 miliseconds
.body.createtextrange.scrollIntoView False 'Scroll to bottom of page
Next

.Writeln "<p>Ok - Bye.</p><br>"
.body.createtextrange.scrollIntoView False 'Scroll to bottom of page
.body.style.cursor = "" 'Return cursor to normal
.Title = Wscript.ScriptName & " is Done! "
End With

WScript.Sleep(5000) 'Pause 5 seconds
objExplorer.Quit 'Close the status window
Set objExplorer = Nothing
Wscript.Quit


Sub IE_onQuit() 'This subroutine will fire when Iexplore is closed
'Script will continue to run after IE window closes.
MsgBox "User closed window!"
End Sub

John G Harris

unread,
Jan 6, 2012, 6:04:06 AM1/6/12
to
On Thu, 5 Jan 2012 at 22:01:48, in comp.lang.javascript, Michael Haufe
(TNO) wrote:
>On Jan 3, 11:09 am, Dr J R Stockton <reply1...@merlyn.demon.co.uk>
>wrote:
>> In Windows Script Host, given a File Object with properties including
>> Name and Type, is there a direct guaranteed infallible way in
>> JScript/VBScript to find whether the file is a known Type?
>
>Generally not as there is not a bijection between the TYPE and its
>registry entry. One would have to use the file extension as a key to
>lookup the existence of an entry to get more accurate results.
<snip>

Beware of believing file extensions. Up to Win ME at least, I haven't
checked XP, a .txt file's content is inspected by Windows. If it looks
like a PIF file then the file will be executed when you thought it would
be displayed by Notepad.

John
--
John Harris

Michael Haufe (TNO)

unread,
Jan 6, 2012, 7:26:46 AM1/6/12
to
On Jan 6, 5:04 am, John G Harris <j...@nospam.demon.co.uk> wrote:
> On Thu, 5 Jan 2012 at 22:01:48, in comp.lang.javascript, Michael Haufe(TNO) wrote:
> >On Jan 3, 11:09 am, Dr J R Stockton <reply1...@merlyn.demon.co.uk>
> >wrote:
> >> In Windows Script Host, given a File Object with properties including
> >> Name and Type, is there a direct guaranteed infallible way in
> >> JScript/VBScript to find whether the file is a known Type?
>
> >Generally not as there is not a bijection between the TYPE and its
> >registry entry. One would have to use the file extension as a key to
> >lookup the existence of an entry to get more accurate results.
>
>   <snip>
>
> Beware of believing file extensions. Up to Win ME at least, I haven't
> checked XP, a .txt file's content is inspected by Windows. If it looks
> like a PIF file then the file will be executed when you thought it would
> be displayed by Notepad.

Whether it is an _expected_ result or not is a separate issue to
whether it is KNOWN/Recognized by the OS.

Mayayana

unread,
Jan 6, 2012, 8:33:40 AM1/6/12
to

| Your question was malformed.

Indeed. Neither of his questions seems coherent to
me. He never explained what he was trying to do.
And he's been around long enough, in any case, to
answer both of his questions himself. ...Odd.


John G Harris

unread,
Jan 6, 2012, 9:58:45 AM1/6/12
to
But if you "use the file extension as a key to lookup the existence of
an entry to get more accurate results" then you will get *less* accurate
results in this case. That's the point. Not getting the action you
expected is merely the evidence.

John
--
John Harris

Michael Haufe (TNO)

unread,
Jan 6, 2012, 3:27:27 PM1/6/12
to
Since the original question, AFAICT, was to determine whether the OS
recognizes a given file, moving from a human interpretation of the
file's description to an existence check in the registry is most
definitely going to be more accurate. If I have a predicate: isKnown,
and isKnown("*.dat") is true, it doesn't matter at this level of
abstraction what application that extension is mapped to, only whether
it has a mapping at all.

Dr J R Stockton

unread,
Jan 7, 2012, 3:11:41 PM1/7/12
to
In comp.lang.javascript message <je6t23$iqf$1...@dont-email.me>, Fri, 6 Jan
2012 08:33:40, Mayayana <maya...@invalid.nospam> posted:
You should not confuse knowing a lot that others do not with knowing
everything that others do know.

--
(c) John Stockton, near London. *@merlyn.demon.co.uk/?.?.Stockton@physics.org
Web <http://www.merlyn.demon.co.uk/> - FAQish topics, acronyms, and links.

Dr J R Stockton

unread,
Jan 7, 2012, 4:10:57 PM1/7/12
to
In comp.lang.javascript message <847ebf0b-4938-4a1e-a108-964535d3d853@z1
2g2000yqm.googlegroups.com>, Thu, 5 Jan 2012 22:05:53, "Michael Haufe
(TNO)" <t...@thenewobjective.com> posted:
Yes.

The original article in the thread was concerned with one particular
point. That example was partly from what I already have, with the third
column by hand. It will be to produce something similar but with other
information.

But the core of the situation is that all CScript output is through

function Right(N, Str) { N = Hush[N]
if (N == "0") return
if (N == "1") WScript.StdOut.Write(Str)
if (N == "2") WScript.StdErr.Write(Str)
if (N == "3") txtStreamOut.Write(Str)
}

in which almost all Str end with a newline; and I want to use

if (N == "4") SOMETHING(Str)

[ after having detected (which I can do) WScript ] to get a
corresponding display.

If that can be done, the application is no longer just a CScript
application usable only by those who can find and use a DOS-like command
line, but it is usable also by those who only use GUI routines.


Another approach would be to use the same code in an HTA, which I would
have to learn about.

--
(c) John Stockton, nr London, UK. ?@merlyn.demon.co.uk Turnpike v6.05.
Website <http://www.merlyn.demon.co.uk/> - w. FAQish topics, links, acronyms
PAS EXE etc. : <http://www.merlyn.demon.co.uk/programs/> - see in 00index.htm
Dates - miscdate.htm estrdate.htm js-dates.htm pas-time.htm critdate.htm etc.

Dr J R Stockton

unread,
Jan 7, 2012, 4:14:46 PM1/7/12
to
In comp.lang.javascript message <je6cri$v7v$1...@speranza.aioe.org>, Fri, 6
Jan 2012 14:31:26, Bwig Zomberi <zomberiMA...@gmail.invalid>
posted:
I do not suppose Michael Haufe is; and I am not, especially as it needs
to be //nologo. I know it well.

--
(c) John Stockton, nr London UK. ???@merlyn.demon.co.uk Turnpike v6.05 MIME.
Web <URL:http://www.merlyn.demon.co.uk/> - FAQish topics, acronyms, & links.
Check boilerplate spelling -- error is a public sign of incompetence.
Never fully trust an article from a poster who gives no full real name.
Message has been deleted

Michael Haufe (TNO)

unread,
Jan 8, 2012, 5:52:24 PM1/8/12
to
On Jan 7, 3:10 pm, Dr J R Stockton <reply1...@merlyn.demon.co.uk>
wrote:
> In comp.lang.javascript message <847ebf0b-4938-4a1e-a108-964535d3d853@z1
> 2g2000yqm.googlegroups.com>, Thu, 5 Jan 2012 22:05:53, "Michael Haufe
> (TNO)" <t...@thenewobjective.com> posted:
>
> >Are you looking for a formatted table output in the command window in
> >a way similar to your original example?
>
> Yes.
>
> The original article in the thread was concerned with one particular
> point.  That example was partly from what I already have, with the third
> column by hand.  It will be to produce something similar but with other
> information.

So did my sample code work help at all?

> But the core of the situation is that all CScript output is through
>
>         function Right(N, Str) { N = Hush[N]
>           if (N == "0") return
>           if (N == "1") WScript.StdOut.Write(Str)
>           if (N == "2") WScript.StdErr.Write(Str)
>           if (N == "3") txtStreamOut.Write(Str)
>           }
>
> in which almost all Str end with a newline; and I want to use
>
>           if (N == "4") SOMETHING(Str)
>
> [ after having detected (which I can do) WScript ] to get a
> corresponding display.
>
> If that can be done, the application is no longer just a CScript
> application usable only by those who can find and use a DOS-like command
> line, but it is usable also by those who only use GUI routines.

So to check if I understand correctly, you want a function that will
take a collection of results in the format of:

FILENAME TYPE KNOWN

and display them as a formatted table in CScript or as an HTML table
in a generated HTA in WScript?

Dr J R Stockton

unread,
Jan 9, 2012, 6:45:36 PM1/9/12
to
In comp.lang.javascript message <a46fb17c-5638-4b1a-8d87-034ca257435e@p1
6g2000yqd.googlegroups.com>, Sun, 8 Jan 2012 14:52:24, "Michael Haufe
(TNO)" <t...@thenewobjective.com> posted:

>On Jan 7, 3:10 pm, Dr J R Stockton <reply1...@merlyn.demon.co.uk>
>wrote:
>> In comp.lang.javascript message <847ebf0b-4938-4a1e-a108-964535d3d853@z1
>> 2g2000yqm.googlegroups.com>, Thu, 5 Jan 2012 22:05:53, "Michael Haufe
>> (TNO)" <t...@thenewobjective.com> posted:
>>
>> >Are you looking for a formatted table output in the command window in
>> >a way similar to your original example?
>>
>> Yes.
>>
>> The original article in the thread was concerned with one particular
>> point.  That example was partly from what I already have, with the third
>> column by hand.  It will be to produce something similar but with other
>> information.
>
>So did my sample code work help at all?

Completely. But with the apparent peculiarity that extension $$$ (my
editor's backup) is known to the registry, although the corresponding
.Type string is "$$$ File", similar to that for a file with extension
OK4 which is not so known.

Aside to non-Anglos :
What would the .Type property be for an unregistered file in
systems set for other well-known Western European languages?
E.g. Fichier OK4 / OK4 Fichier, etc.? Users are required to be
able to read instructions in English, but should not be required
to have an English-speaking Windows.


>> But the core of the situation is that all CScript output is through
>>
>>         function Right(N, Str) { N = Hush[N]
>>           if (N == "0") return
>>           if (N == "1") WScript.StdOut.Write(Str)
>>           if (N == "2") WScript.StdErr.Write(Str)
>>           if (N == "3") txtStreamOut.Write(Str)
>>           }
>>
>> in which almost all Str end with a newline; and I want to use
>>
>>           if (N == "4") SOMETHING(Str)
>>
>> [ after having detected (which I can do) WScript ] to get a
>> corresponding display.
>>
>> If that can be done, the application is no longer just a CScript
>> application usable only by those who can find and use a DOS-like command
>> line, but it is usable also by those who only use GUI routines.
>
>So to check if I understand correctly, you want a function that will
>take a collection of results in the format of:
>
>FILENAME TYPE KNOWN
>
>and display them as a formatted table in CScript or as an HTML table
>in a generated HTA in WScript?

Not really; you are going further that I wish for.

I wanted a routine that would accept text, a line at a time (P.S. to be
strictly accurate, these lines could contain newlines), and cause it to
appear as it would in Notepad. The example is tabular, but other lines
are not. To illustrate, here's a command-prompt screen capture :

prompt>seek . n
:: SEAKFYLE.JS >= 2012-01-09, at 2012-01-09 20:21:56, see SEAKFYLE.HTM
2012-01-09 17:40:34 33275 .....a.. "SEAKFYLE.$$$"
2012-01-09 17:41:00 33291 .....a.. "SEAKFYLE.HTM"
2012-01-09 17:38:37 17603 .....a.. "SEAKFYLE.JS"
| Date/time now : 2012-01-09 20:21:56
| Find : 3 matches
| Finding in : C:\WSH\SEEK ; 31 ms


If I do the following command line, nothing appears in the screen before
the next prompt, as Q sets all output to Channel 3 which is sent To file
xyz.

prompt>seek . n Q333333 Txyz

and file xyz. can be opened in Notepad (except for needing an 0D before
each 0A, which can be dealt with (most easily by using WFVIEW instead)).

Aside : AFAICS, no GUI editor or viewer that I have can AFAIK accept
piped-in text, which is a pity.

What I want to end up with is using essentially the same code as I have
at present, but as a GUI application - instead of opening a Command
Prompt and giving it a Command Line, to open a GUI window and give it,
with some equivalent of a JavaScript prompt(), the commands. Or just
command-line in, GUI out.

I forgot to say that the GUI needs to show each line as it is output
from the current code, without waiting for the stream to complete.

The alternative seems to be to use an HTA, treating my existing code as
an include file of functions and variables, and suppressing any unwanted
parts. That should be easy, if I learn about HTAs first - - - which I
seem to have done.

It's now fundamentally working in an HTA, but the adapting needs to be
cleaned up, though not tonight.

Todd Vargo

unread,
Jan 10, 2012, 12:27:37 AM1/10/12
to
On 1/9/2012 6:45 PM, Dr J R Stockton wrote:
<snip>
> Aside : AFAICS, no GUI editor or viewer that I have can AFAIK accept
> piped-in text, which is a pity.
>
> What I want to end up with is using essentially the same code as I have
> at present, but as a GUI application - instead of opening a Command
> Prompt and giving it a Command Line, to open a GUI window and give it,
> with some equivalent of a JavaScript prompt(), the commands. Or just
> command-line in, GUI out.
>
> I forgot to say that the GUI needs to show each line as it is output
> from the current code, without waiting for the stream to complete.

The vbscript code that I posted does that. To set a fixed pitch font,
change <body> tag to <body STYLE=""font:10 pt courier"">

If desired. you can easily code it to receive input through stdin, but
that usually implies user operation from the command line.

>
> The alternative seems to be to use an HTA, treating my existing code as
> an include file of functions and variables, and suppressing any unwanted
> parts. That should be easy, if I learn about HTAs first - - - which I
> seem to have done.
>
> It's now fundamentally working in an HTA, but the adapting needs to be
> cleaned up, though not tonight.

--

Dr J R Stockton

unread,
Jan 10, 2012, 4:40:28 PM1/10/12
to
On Jan 9, 11:45 pm, Dr J R Stockton <reply1...@merlyn.demon.co.uk>
wrote:

> The alternative seems to be to use an HTA, treating my existing code as
> an include file of functions and variables, and suppressing any unwanted
> parts.  That should be easy, if I learn about HTAs first - - - which I
> seem to have done.
>
> It's now fundamentally working in an HTA, but the adapting needs to be
> cleaned up, though not tonight.

Rather easy. Essentially, the HTA has a button and a textarea. The
existing JScript for WSH is modified so that the code is just
declarations of globals and functions, followed by a call of the main
function :-

if (typeof window == "undefined") SEAKFYLE()

In CScript, that call calls, and all still works as before; in HTA,
that call does not call, but the button does it instead.

The HTA "include"s SEAKFYLE.JS, and also contains script

Fawm = document.forms[0]

SEAKFYLE.JS uses the value of Fawm to write to the textarea, and the
truth of Fawm for minor code changes, such as reading the command line
from an "<input type=text" in the HTA.

<http://www.merlyn.demon.co.uk/programs/32-bit/seakfyle.htm>
<http://www.merlyn.demon.co.uk/programs/32-bit/seakfyle.js>
<http://www.merlyn.demon.co.uk/programs/32-bit/seek.hta>
<http://www.merlyn.demon.co.uk/programs/32-bit/seek.bat>
<http://www.merlyn.demon.co.uk/programs/32-bit/seakfyle.zip>

but please take copies for repeated use.



Query : is there an easy way to resize the textarea vertically when
the HTA window is resized, so that the form comes within a gnat's
whisker (0.5 ex, or a few px) of the bottom of the window, and if so
what is it?

--
(c) John Stockton, near London, UK. Using Google, no spell-check.
Mail: J.R.""""""""@physics.org or (better) via Home Page at
Web: <http://www.merlyn.demon.co.uk/>
FAQish topics, acronyms, links, etc.; Date, Pascal, JavaScript, ....|

Michael Haufe (TNO)

unread,
Jan 10, 2012, 8:04:55 PM1/10/12
to
On Jan 10, 3:40 pm, Dr J R Stockton <J.R.Stock...@physics.org> wrote:

> Rather easy. Essentially, the HTA has a button and a textarea. The
> existing JScript for WSH is modified so that the code is just
> declarations of globals and functions, followed by a call of the main
> function :-
>
> if (typeof window == "undefined") SEAKFYLE()
>
> In CScript, that call calls, and all still works as before; in HTA,
> that call does not call, but the button does it instead.
>
> The HTA "include"s SEAKFYLE.JS, and also contains script
>
> Fawm = document.forms[0]
>
> SEAKFYLE.JS uses the value of Fawm to write to the textarea, and the
> truth of Fawm for minor code changes, such as reading the command line
> from an "<input type=text" in the HTA.
>
> <http://www.merlyn.demon.co.uk/programs/32-bit/seakfyle.htm>
> <http://www.merlyn.demon.co.uk/programs/32-bit/seakfyle.js>
> <http://www.merlyn.demon.co.uk/programs/32-bit/seek.hta>

Note that HTML Applications can take command like arguments as well by
using windows.dialogArguments

More info should be here:
<http://msdn.microsoft.com/en-us/library/ms536496%28v=vs.85%29.aspx>

The WScript object is not available in an HTA. Alternative methods
must be used.

> <http://www.merlyn.demon.co.uk/programs/32-bit/seek.bat>

Why do you want/need a *.BAT file? If *.js is registered to open with
Cscript.exe or Wscript.exe, then it would be sufficient to simply type
SEAKFYLE.JS at the command prompt. Passing arguments to the script can
be managed by the WScript.Arguments collection:

<http://www.devguru.com/technologies/wsh/quickref/
wscript_arguments.html>

> <http://www.merlyn.demon.co.uk/programs/32-bit/seakfyle.zip>
>
> but please take copies for repeated use.
>
> Query : is there an easy way to resize the textarea vertically when
> the HTA window is resized, so that the form comes within a gnat's
> whisker (0.5 ex, or a few px) of the bottom of the window, and if so
> what is it?

Perhaps this might help:
<https://gist.github.com/1592291>

Dr J R Stockton

unread,
Jan 12, 2012, 6:43:43 PM1/12/12
to
In comp.lang.javascript message <67023a25-650b-454f-a915-ebeae30ccf6e@f1
1g2000yql.googlegroups.com>, Tue, 10 Jan 2012 17:04:55, "Michael Haufe
(TNO)" <t...@thenewobjective.com> posted:

>On Jan 10, 3:40 pm, Dr J R Stockton <J.R.Stock...@physics.org> wrote:
>
>> Rather easy. Essentially, the HTA has a button and a textarea. The
>> existing JScript for WSH is modified so that the code is just
>> declarations of globals and functions, followed by a call of the main
>> function :-
>>
>> if (typeof window == "undefined") SEAKFYLE()
>>
>> In CScript, that call calls, and all still works as before; in HTA,
>> that call does not call, but the button does it instead.
>>
>> The HTA "include"s SEAKFYLE.JS, and also contains script
>>
>> Fawm = document.forms[0]
>>
>> SEAKFYLE.JS uses the value of Fawm to write to the textarea, and the
>> truth of Fawm for minor code changes, such as reading the command line
>> from an "<input type=text" in the HTA.
>>
>> <http://www.merlyn.demon.co.uk/programs/32-bit/seakfyle.htm>
>> <http://www.merlyn.demon.co.uk/programs/32-bit/seakfyle.js>
>> <http://www.merlyn.demon.co.uk/programs/32-bit/seek.hta>
>
>Note that HTML Applications can take command like arguments as well by
>using windows.dialogArguments

That's well worth knowing. I could use that to pre-load the input line;
and I can add an option, command-line only, to auto-start after pre-
load. ... Except that neither windows nor window.dialogArguments appears
to exist. ... Needs <hta:application ID="oHTA" and then
alert(oHTA.commandLine) shows the command line.



>More info should be here:
><http://msdn.microsoft.com/en-us/library/ms536496%28v=vs.85%29.aspx>
>
>The WScript object is not available in an HTA. Alternative methods
>must be used.

I think that, in HTA mode, no path of execution should now lead to a
WScript. Because of the heritage of the "design" of the code, detected
errors lead to a chain of function calls used as GOTOs, since they ended
up in the original Pascal with a Halt(N) call. In WSH, WScript.Quit(N)
does the same. I'd like to use something similar in HTA mode; but the
only way of stopping that I know is to exit all routines and fall off
the end of the script, which would be tiresome to arrange.

That problem is now circumvented.


>> <http://www.merlyn.demon.co.uk/programs/32-bit/seek.bat>
>
>Why do you want/need a *.BAT file? If *.js is registered to open with
>Cscript.exe or Wscript.exe, then it would be sufficient to simply type
>SEAKFYLE.JS at the command prompt.

I prefer to change such defaults as little as possible. I'd have to
remember to do it on other machines, and other users would also need to
do it. There could be other *.js files needing to run in WScript. But
I've added the possibility to the description.


> Passing arguments to the script can
>be managed by the WScript.Arguments collection:

><http://www.devguru.com/technologies/wsh/quickref/
>wscript_arguments.html>

I'm using WScript.Arguments already.


>> <http://www.merlyn.demon.co.uk/programs/32-bit/seakfyle.zip>
>>
>> but please take copies for repeated use.
>>
>> Query : is there an easy way to resize the textarea vertically when
>> the HTA window is resized, so that the form comes within a gnat's
>> whisker (0.5 ex, or a few px) of the bottom of the window, and if so
>> what is it?
>
>Perhaps this might help:
><https://gist.github.com/1592291>

It is rather too much changed from a version that I no longer have to
import, or to be easy to follow.

Having seen it working, aesthetics demand that the textarea is sized to
fill the rest of the form, and the form is sized to only nearly reach
the bottom of the viewport. But @FrmMain margin-bottom: 5px; does
that.

Resizing then is nice, or will be once I've trapped the error that
occurs when the bottom is dragged up too far. This does it :
TA.style.height = Math.max(0, TA.parentNode.offsetHeight - 10) + "px";

The <H3> wastes height !! I'll stick with <big> or equivalent.

The ROWS control seems not to work; but it has no useful function with
auto-resizing. Removed.

The SEEK button failed, because of its re-naming, fixed.

I was somewhat surprised that Fawm = document.forms[0]; in the HEAD
works when the actual form is in the body.

There is at present one remaining infelicity: the heading (and other)
text, when wrapped because of Zoom or narrowing the window, wraps under
the following element. That's now mitigated by shortening the heading
line.

If IE gets Zoom Text Only, I suppose the vertical sizing will have to be
redone in ex or em units.


The version uploaded at about 23:40 GMT, dated 2012-01-12, includes all
this. More thanks.

--
(c) John Stockton, nr London, UK. ?@merlyn.demon.co.uk Turnpike 6.05 WinXP.
Web <http://www.merlyn.demon.co.uk/> - FAQ-type topics, acronyms, and links.
Command-prompt MiniTrue is useful for viewing/searching/altering files. Free,
DOS/Win/UNIX now 2.0.6; see <URL:http://www.merlyn.demon.co.uk/pc-links.htm>.

Michael Haufe (TNO)

unread,
Jan 13, 2012, 1:36:44 AM1/13/12
to
On Jan 12, 5:43 pm, Dr J R Stockton <reply1...@merlyn.demon.co.uk>
wrote:
... Except that neither windows nor window.dialogArguments appears
> to exist. ... Needs   <hta:application ID="oHTA"  and then
> alert(oHTA.commandLine) shows the command line.

Indeed, I was staring at the wrong msdn page (not to mention the
typo).

>The version uploaded at about 23:40 GMT, dated 2012-01-12, includes all
>this. More thanks.

You're welcome

Michael Haufe (TNO)

unread,
Jan 13, 2012, 1:47:00 AM1/13/12
to
On Jan 12, 5:43 pm, Dr J R Stockton <reply1...@merlyn.demon.co.uk>
wrote:
> In comp.lang.javascript message <67023a25-650b-454f-a915-ebeae30ccf6e@f1
> 1g2000yql.googlegroups.com>, Tue, 10 Jan 2012 17:04:55, "Michael Haufe
> (TNO)" <t...@thenewobjective.com> posted:

> >On Jan 10, 3:40 pm, Dr J R Stockton <J.R.Stock...@physics.org> wrote:

> >> <http://www.merlyn.demon.co.uk/programs/32-bit/seakfyle.js>
> >> <http://www.merlyn.demon.co.uk/programs/32-bit/seek.hta>
>
> >Note that HTML Applications can take command like arguments as well by
> >using windows.dialogArguments
>
> That's well worth knowing.  I could use that to pre-load the input line;
> and I can add an option, command-line only, to auto-start after pre-
> load. ... Except that neither windows nor window.dialogArguments appears
> to exist. ... Needs   <hta:application ID="oHTA"  and then
> alert(oHTA.commandLine) shows the command line.
...
> The version uploaded at about 23:40 GMT, dated 2012-01-12, includes all
> this.  More thanks.


Since I was correct only in recalling the idea and not the API, it
would be nice if seakfyle.js didn't perpetuate my bad advice at the
bottom. A generic attribution or nothing at all would be fine with me.

Dr J R Stockton

unread,
Jan 14, 2012, 3:15:23 PM1/14/12
to
On Jan 13, 6:47 am, "Michael Haufe (TNO)" <t...@thenewobjective.com>
wrote:


> Since I was correct only in recalling the idea and not the API, it
> would be nice if seakfyle.js didn't perpetuate my bad advice at the
> bottom. A generic attribution or nothing at all would be fine with
> me.

Removed, some while ago now!

You'll probably have noticed how I am, for the time being, indicating
what I've changed in your HTA; for example, auto-start is available
from the SEEK.HTA command line, and the layout is tighter. Also,
SEEK.BAT is no longer limited to 8 Options.

Instead of using WScript.Quit at the end of performing a non-
continuable Option, I now set a Boolean to indicate that the option is
wanted. The Boolean can then be tested in the main routine; if set,
the Option routine is called and returns, and from there it is easy to
in effect GOTO near the end of the main routine.

SEAKFYLE.HTM has a list of what that I use in CScript mode I have not
yet been able to do in HTA mode.

For some inscrutable reason, my newsreader seems to think that this
thread, or the pair of us, is kill-ruled. Unless I recall the
possibility at the right time, that delays getting the item as a News
article to where I like to reply from. Therefore, see sig.

Thanks for your continued help.
0 new messages