Ctrl + Escape or Win: Display start menu.
Shift + F10 or AppsKey: Display context menu.
Win + E: Open Windows Explorer.
Win + R: Open Run dialog.
Win + M: Minimize all windows.
Win + Shift + M: Undo minimize all windows.
Win + D: Toggle minimize all windows.
Win + B (XP only): Activate system tray. Arrow keys select, Enter double-clicks, and AppsKey or Shift + F10 right-clicks.
Win + L (XP Only): Locks keyboard. Similar to Lock Workstation.
Win + F or F3: Open Find dialog. (All Files) F3 may not work in some applications which use F3 for their own find dialogs.
Win + Control + F: Open Find dialog. (Computers)
Win + U: Open Utility Manager.
Win + F1: Open Windows help.
Win + Pause: Open System Properties dialog.
Win + Tab: Cycle through taskbar buttons. Enter clicks, AppsKey or Shift + F10 right-clicks.
Win + Shift + Tab: Cycle through taskbar buttons in reverse.
Alt + Tab: Display CoolSwitch. More commonly known as the AltTab dialog.
Alt + Shift + Tab: Display CoolSwitch; go in reverse.
Alt + Escape: Send active window to the bottom of the z-order.
Alt + Shift + Escape: Activate the window at the bottom of the z-order.
Alt + F4: Close active window; or, if all windows are closed, open shutdown dialog.
Shift while a CD is loading: Bypass AutoPlay.
Ctrl + Alt + Delete or Ctrl + Alt + NumpadDel (Both NumLock states): Invoke the Task Manager or NT Security dialog.
Ctrl + Shift + Escape (XP Only): Invoke the task manager. On earlier OSes, acts like Ctrl + Escape.
Printscreen: Copy screenshot of current screen to clipboard.
Alt + Printscreen: Copy screenshot of current active window to clipboard.
Ctrl + Alt + Down Arrow: Invert screen. Untested on OSes other than XP.
Ctrl + Alt + Up Arrow: Undo inversion.
"d:\nvzn4-devel\openinsight\OINSIGHT.exe" /ap=mms /un=mms /mode=batch /window=batch_reporting_monitor /entity=edheal /pfuserid=reportbatcher
start P:\testOINSIGHT\OINSIGHT.exe /ap=pfsec /un=pfsec /mode=batch /window=batch_reporting_monitor /entity=edmen /pfuserid=reportbatcher
rem **** begin ****
rem ** test.bat - call oecgi without web server
rem **** end ******
These are .ocx / .dll messages experienced in programming, where, why & how resolved (if possible).
|error number||message||further details|
|-214718113||catastrophic failure||saw this message when programming to outlook. When outlook is not started on workstation, the code dies rather crudely.|
|-2147221005||(800401F3) Invalid class string.||registry_key= 'VSPRINTER7.VSPRINTER.1mpd'
oleObj = OleCreateInstance(registry_key)
status = OleStatus()
link to Microsoft KB article on error messages The list is apparently from winerror.h (C++)
The following is the shortcut to the batch processor.
"\\<<powerforce_share>>\Oinsight\OINSIGHT.exe" /ap=pfsec /un=pfsec /mode=batch /window=batch_reporting_monitor /entity=nlpv /pfuserid=reportbatcher
This is likely to change with rel 9.x using the RTI_SCHEDULER.
exists = 1
IF rowexists('SYSOBJ','$':progname:"*":@appid<1>) ELSE
IF rowexists('SYSOBJ','$':progname) ELSE
exists = 0
IF exists ELSE
err = 'Invalid Program'
cancelled = get_printer("CANCEL")
IF cancelled THEN
eof = 1
void = set_printer(" ",printline)
CALL SET_PROPERTY (@WINDOW,"REFRESH",0)
CALL BULK_SET_PROPERTY (CONTROLS,PROPERTIES,VALUES)
CALL SET_PROPERTY (@WINDOW,"REFRESH",1)
now = iconv(oconv(date(),'D/'):' ':oconv(time(), 'MTS'), "DT^S") - gives as unique a key as possible for time stamping.
cancelled = Get_Printer("CANCEL")- then set eof = 1
Use an existing POPUP to display only 2 keys
existingpopup = 'CONTACT_TYPES'
popdef = ''
popdef<PMODE$> = 'K'
popdef<PDISPLAY$> = 'EMAIL_INV':@VM:'EMAIL_PAY'
result = popup(@Window, popdef, EXISTINGPOPUP)
TheSelect = 'SELECT SYSTABLES WITH @ID STARTING WITH ':Quote('KRON_'):'
OR WITH @ID STARTING WITH ':Quote('MAINT')
RLIST(TheSelect, 5, '', '', '')
eof = false$
TableList = ''
Readnext tbid else eof = true$
Until eof do
TableList := tbid:@VM
TableList[-1,1] = ''
SelectedTables = ''
popdef = ""
popdef<PFORMAT$> = "Table":@svm:40:@svm:"L"
popdef<PDISPLAY$> = TableList
popdef<PMODE$> = "L"
popdef<PSELECT$> = 2
popdef<PTITLE$> = "Select the relevant tables"
popdef<PTYPE$> = "F"
popdef<PINITSELECT$> = SelectedTables
popdef<PCaptureEsc$> = True$
result = Popup (@Window, popdef)
In the above definition, mode is the field that says I'm passing 'L'iteral data and display is the actual data
If mode was 'K', then display would be a vm list of keys and you would need popdef<PFILE$> to specify the which dictionary
SelectedTables would be an @vm list of rows you want to appear as already selected in a multiselect popup or a single row otherwise.
result = Popup (@Window, popdef, existingpopup)
So yours may look like this
popdef = ''
popdef<PMODE$> = 'K' ; // just in case it isnt already
popdef<PDISPLAY$> = 'EMAIL_INV':@VM:'EMAIL_PAY'
result = popup(@Window, popdef, contact_types)
This might be a writeup on how Events propogate:
My current understanding of promoted events, the event chain and how OLE events figure into this.
They're having an issue with OLE events triggering before other events are finishing, eg the click of an OLE button is happening before the Lostfocus of the previous control has done its thing. I believe its the way the frameworks are implemented as Don told James, its expected behaviour. Regardless of the background, I did my best to explain the steps to James and whilst I'm sure you're atop of all this, thought it might be handy to add to your list of things to remember documentation. That wasn't all lost with the fried server was it? Anyway, the crux of the info is below for you to do with what you will.
Your application is 'YOURAPP'
Your test window is 'TEST'
Your editline is called 'DATE'
The event you're firing is the 'LOSTFOCUS'
When the lostfocus event occurs on the date editline, whilstever you continue to return a 1, the following actual events are checked and run if something is found. They do so in this order.
1. YOURAPP*LOSTFOCUS*TEST.DATE ...
2. YOURAPP*LOSTFOCUS*TEST ...
3. YOURAPP*LOSTFOCUS.EDITFIELD.OIWIN* ...
4. SYSPROG*LOSTFOCUS.EDITFIELD.OIWIN* ...
5. YOURAPP*LOSTFOCUS..OIWIN* ...
6. SYSPROG*LOSTFOCUS..OIWIN* ...
7. YOURAPP*..OIWIN* ... SYSPROG*..OIWIN* ...
Which in english means
1. Run any lostfocus code that is specific to the 'DATE' editfield on the 'TEST' window
2. Run any lostfocus code that is specific to the 'TEST' window
3. Run any lostfocus code that is specific to editfields on ANY window in application 'YOURAPP'
4. Run any lostfocus code that is specific to editfields on ANY window in application 'SYSPROG'
5. Run any lostfocus code that is specific to ANY window in application 'YOURAPP'
6. Run any lostfocus code that is specific to ANY window in application 'SYSPROG'
7. Run any code that is specific to ANY window in application 'YOURAPP'
8. Run any code that is specific to ANY window in application 'SYSPROG'
Of course, the more inheritance levels you have, the longer that chain is but hopefully you get the picture.
Now my understanding of the qualify_event is that its job is to tell OI what point in the chain should any OLE events be sent to. In other words, OLE events themselves don't automatically follow this process above. In fact OI ignores them altogether unless you specifically qualify the event, which is why we do it. Qualifying tells OI to firstly listen for whichever OLE event you qualify, (in your case, all of them) and then when you hear one, run any code specified at the point in the chain you've qualified to.
That's where the EventKey comes in. Your EventKey in your qualify message is YOURAPP*..OIWIN* which if you look back up is the 7th point in the chain above. So, whilst your lostfocus event makes its way through the chain to that point, the OLE click goes directly there. Now, admittedly, this is still a little grey area but it is therefore conceivable that the two can get in each others way.
Qualifying to here makes sense in the context of the frameworks because that event will be found in every OI app so nothing other than installing frameworks is required and promoted events just start working.
What do we do differently?
Our EventKey points to YOURAPP*OLE.OLECONTROL.OIWIN*
As you can see, that doesn't appear in the event chain above at all but is the equivalent of line 3 but for OLE events not LostFocus events. So my guess at the grey area is that in our case, the lostfocus event gets to finish its entire chain and then the OLE chain begins. In your case, the OLE event is somehow intercepting the lostfocus because they are both trying to run the same event exe but the OLE one gets there first whilst the lostfocus is resolving itself higher up the chain.
Now if all you do is change your qualify to point here, then the OLE events won't actually fire at all which is why they wouldn't do it within the frameworks. This event would not yet have an entry in the 'SYSREPOSEVENTEXES' file or if it does, it wouldn't be calling your code anyway. So it would appear as if the OLE controls just don't work. The other piece of the puzzle is to use the OI Event Designer to generate promoted event for the OLE event on any OLE control.
Dave G can show you how to do that if you haven't done it before. He wrote the thing. The result would be that any time an OLE event occurs the YOURAPP*OLE.OLECONTROL.OIWIN* would run calling the routine pe_olecontrol_ole. That is where you do your generic OLE stuff.
(taken from OI works conversation) I have RemoteApp launch a boot script so I can customize the launch process without impacting the RemoteApp icons. Attached is a stripped down version of a VBS script used to set the mapped drive and launch OpenInsight
Set wshNetwork = CreateObject("WScript.Network")
Set objShell = CreateObject("Wscript.Shell")
Dim strApp, strAppArgs, strAppShare
MAPPED_DRIVE = "X:"
strApp = MAPPED_DRIVE & "\Path\OINSIGHT\OINSIGHT.exe"
strAppArgs = "/ap=APP /DV=0"
strAppShare = "\Server\Share"
'Try to remove and re-attach the mapped drive incase it points to the wrong server
On Error Resume Next
WshNetwork.RemoveNetworkDrive MAPPED_DRIVE , True, True
On Error Goto 0
wshNetwork.MapNetworkDrive MAPPED_DRIVE, strAppShare
'Before launching OpenInsight we must change to the OpenInsight directory
'Get the path fo the apllication and strip out the application path
arrPath = Split(strApp, "\")
For i = 0 to Ubound(arrPath) - 1
strAppPath = strAppPath & arrPath(i) & "\"
'Change to the directory and execute OpenInsight
objShell.CurrentDirectory = strAppPath
objShell.Run strApp & " " & strAppArgs, 1, True
The SRP Mail Utility Install should have installed one stored procedure executable. Examine the SYSOBJ to verify the existence of $SRP_SEND_MAIL. If this record is missing, you can re-run the setup or manually add it using the following steps:
Create a new record
Copy and Paste the following text
LPASTR STDCALL SRPSendMail(LPASTR, LPASTR)
LPASTR STDCALL SRPSendMail(LPASTR, LPASTR) AS SRP_Send_Mail
Save the record in SYSPROCS as DLL_SRP_MAIL
From the command line, type the folloing:
run declare_fcns "DLL_SRP_MAIL"
New report writer (9.3.1)
Checking web_access: [T] SYSTEM_CONTROLS / sys_web_settings<4> log_http, writes to PHONE_LOG
Changes to SQLExpress (to make Dashboard work)
Sql Server Configuration Manager
-> SQL Server Network Configuration
-> Protocols for SQLEXPRESS
-> Shared Memory
-> Enabled => false
-- on all addresses and the 'global' section down the bottom
-> Set Dynamic Port to blank
-> TCP Port to 1433