Kevin,
Chip hit the nail on the head. I wanted to verify this yesterday before
responding but I got side-tracked. I wanted to verify setting an object
to ActiveSettings didn't really make a copy, it just setup a pointer to
what is always active. And indeed this is exactly what is happening.
Chip's suggestion would work fine. Sorry I led you astray on that.
Doug
On 1/30/2012 9:44 PM, Chip Orange wrote:
Hi Kevin,
I think I see the problem:
If you set a variable equal to the activeSettings object, then it will
always point to whatever active settings is pointing to; so as the active
application changes, and the set file changes, and active settings changes,
then your variable will also change to point to the newly activated set
file.
If you want to hold on to the notepad settings for instance, no matter
whether they are active at the moment or some other program is active, then
set your variable not to the active settings object, but to the settings
object of the window for notepad.
For instance, if you know notepad is active at the moment, use a line like:
set mySettings = activeWindow.settings
This will hold on to the settings object for notepad, even if you open some
other program (I just did this in immed using a two step process, where I
set the variable, closed immed, made something else be active, opened immed,
and printed the name of the set file for my variable and it was still the
same as it was at first).
Then you could change and save these settings no matter what's active.
Is that what you needed?
Chip
-----Original Message-----
From: Kevin Huber [mailto:[email protected]]
Sent: Monday, January 30, 2012 10:38 AM
To: gw-scripting
Subject: Re:
Hi Doug:
Sorry to keep hammering on this matter that we talked about
the other day, but I found a new problem.
I followed your suggestion and created a variable called
MyWindowOfInterest and I set it to the ActiveSettings object.
Then I did "MyWindowOfInterest.save" in my dialog and it did
not save the settings for the application I was using, let's
just say Notepad as an example.
I did a little digging and I found that if I changed a
property of ActiveSettings, then the corresponding property
of MyRealWindowOfInterest got changed as well.
To test this, open the Immed window and type the following code:
dim MyRealWindowOfInterest
set MyRealWindowOfInterest = ActiveSettings set
MyRealWindowOfInterest.Screen.CapitalizationAlert = 2 speak
ActiveSettings.Screen.CapitalizationAlert 'it should equal 2
set MyRealWindowOfInterest.Screen.CapitalizationAlert = 0
speak ActiveSettings.Screen.CapitalizationAlert 'you should
find that it equals 0, thus proving that they are always identical.
Now, when I bring my SaveSettings dialog up and the active
settings change from NotePad.Set to Wineyes.set,
MyWindowOfInterest also changes from the Notepad settings to
the Wineyes settings. , . So while I am doing
"MyWindowOfInterest.Save" the ActiveSettings are being saved as well.
The question is how can I make a copy of the ActiveSettings
object which is independent of the ActiveSettings object.
Kevin Huber
On 1/27/12, Kevin Huber<[email protected]> wrote:
Thanks for your patience Doug. I just thought there was more to it
than that.
On 1/25/12, Doug Geoffray<[email protected]> wrote:
Kevin,
You don't have to declare variables in VBScript unless your code
starts with "Option Explicit". Option Explicit just says
to VBScript
that all variables have to be defined before they are used so it
knows if it is valid or not when you use it. But to define any
variable you just do something like:
dim blah
Variables in VBScript are all variants...so blah could be
an object
or an int or a string or whatever. If you don't have the Option
Explicit than you just use the variable.
We are getting more into VBScript than Window-Eyes object
model. So
if this still isn't clear to you I would suggest Chip's training
materials or a VBScript user's manual of some sort.
Doug
On 1/25/2012 3:40 PM, Kevin Huber wrote:
Hi Doug:
How would you declare that variable?
Kevin Huber
On 1/25/12, Doug Geoffray<[email protected]> wrote:
Kevin,
When you assign a variable to an object in VBScript you
have to use
the Set command. I used this in my example when I responded the
first time. The one line is just:
Set MyVariable = ActiveSettings
Doug
On 1/25/2012 2:44 PM, Kevin Huber wrote:
On 1/23/12, Kevin Huber<[email protected]> wrote:
Thanks Doug:
Sounds like a good plan. I'll work on it.
Kevin Huber
On 1/23/12, Doug Geoffray<[email protected]> wrote:
Kevin,
You just need to get a copy of the ActiveSettings before you
change it.
For example when you hotkey is pressed you can get the
ActiveSettings and save it off while you then go and bring up
your dialog. The active window will change thereby
making the
ActiveSettings change but you can go back and used your
previously saved version. So for example the first
line of your
hotkey (I'm assuming you are using hotkey but anything would
work).
set MyRealWindowOfInterest = ActiveSettings
Than when you want to save their settings just do
MyRealWindowOfInterest .Save
Or instead of saving it off you could just find the window of
interest and get the SetFile object from there.
There are lots
of ways to get the object you want. It just depends
on what you
are doing.
Doug
On 1/20/2012 4:44 PM, Kevin Huber wrote:
Hi Doug:
I think you just hit the nail on the head.
Based on some testing that I did,I think that the
settings are
being saved to Wineyes.set. I want to save the settings to
the application that had focus just before the dialog was
called up.
For example, if I am in Notepad, and I want to change the
punctuation settings, then save them, I want to be
able to save
the new settings in Notepad.set using my dialog.
Is there a way to accomplish this?
Kevin Huber
On 1/17/12, Doug Geoffray<[email protected]> wrote:
Kevin,
One possibility is you aren't saving the set you
think you are
or want to. Based on this being in your dialog
proc, you have
an app dialog up. So the active settings would be the set
file being used by your app, not the underlying
program. I'm
not sure what ActiveSettings you are really wanting
as there
isn't enough context but just a thought.
Doug
On 1/13/2012 4:04 PM, Kevin Huber wrote:
Hi:
In my Proofreading script, the eventhandler that I use to
save settings does not work as it should.
the code is as follows:
Function DialogEventHandler(dObj, dEvent, dId, dControl)
DialogEventHandler = False
if Keyboard.KeyDescriberActive then
silence
exit function
end if
Select Case dId
Case "button_yes"
If dEvent = buttonClicked Then
activesettings.save
Speak mystrings("ActiveSettingsSaved")
DialogEventHandler = True
isVisible = 0
dObj.Close
Exit Function
End If
Case "button_no"
If dEvent = buttonClicked Then
Speak
mystrings("ActiveSettingsNotSaved")
DialogEventHandler = True
isVisible = 0
dObj.Close
Exit Function
End If
End Select
End Function
The problem is that the code in the "yes" case should save
the settings but it appears to do nothing.
I think that the "settings.save" command isn't working.
Is there a work-around for this?
Kevin Huber
Hi Doug:
If I do what you suggest, and make a copy of my
activesettings like:
set RealWindowOfInterest = ActiveSettings Do I have to
declare ahe
variable called RealWindowOfInterest, or do I have to create an
object.
Maybe you can point me to an example of how to make a
copy of an
object.
Kevin Huber
Hi Doug:
How do you declare that variable.