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.
> >>>
> >>
> >
> 

Reply via email to