 |
AutoHotkey Community Let's help each other out
|
| View previous topic :: View next topic |
| What is your favorite mode? |
| "i" - Original SendU |
|
40% |
[ 2 ] |
| "c" - Clipboard (clear) |
|
0% |
[ 0 ] |
| "r" - Clipboard (restore) |
|
20% |
[ 1 ] |
| "a" - built-in {ASC nnnn} |
|
40% |
[ 2 ] |
|
| Total Votes : 5 |
|
| Author |
Message |
fmate14
Joined: 28 Oct 2007 Posts: 75 Location: Hungary, Érd
|
Posted: Tue Nov 13, 2007 5:23 pm Post subject: Extended SendU function |
|
|
The original SendU function is very good and useful, but some program (like Total Commander) cannot receive characters with them. I extend this with clipboard function: copy the unicode char to clipboard and paste it to the program. It works well. Now it has a dynamic mode: it uses the original function, if it works well with the active process. Currently there is only few program detected. Please, send me AN EMAIL (fmate 144 at google's mail), if you find a best mode for a program.
SendU.ahk, SendUTest.ahk, Changelog.txt, CoHelper
File name: SendUTest.ahk
| Code: | SendU_Init()
Hotkey, #F12, _SendU_Change_Dynamic_Mode
Hotkey, #F11, _SendU_Toggle_Clipboard_Restore_Mode
return
#q::
; Send Information Separator Four (In Total Commander: goto to the root directory)
SendCh( 0x1c )
return
#s::
; Send with dynamic mode. Very easy. :)
; Is this O with double acute (O")?
; Try other modes (Win+F12)!
SendU(0x150) ; O"
SendU(0x151) ; o"
return
#Include SendU.ahk ; http://autohotkey.try.hu/SendU/SendU.ahk |
Sorry my english.
Last edited by fmate14 on Mon Mar 03, 2008 6:39 pm; edited 7 times in total |
|
| Back to top |
|
 |
Laszlo
Joined: 14 Feb 2005 Posts: 4710 Location: Boulder, CO
|
Posted: Tue Nov 13, 2007 6:30 pm Post subject: |
|
|
Very useful collection of functions, and written cleanly, so they are easy to follow!
A few trivial (and unnecessary) simplifications:
- In the function SendUMode you could initialize the variable mode: “static mode = i”, so there will be no need to check if it is empty.
- In the function SendUSaveClipboard you could use “cb := ClipboardALL” to save non-text contents, too.
- In the function _SendUInput you can get rid of the variable “initialized”, if you check the allocated size of “buffer” (initially 0). Or, initialize it to an arbitrary value “static buffer = #” and check “if buffer = #”.
- The function _SendUGetGlobal could contain a single line: “ return %var% . "" ”. |
|
| Back to top |
|
 |
Laszlo
Joined: 14 Feb 2005 Posts: 4710 Location: Boulder, CO
|
Posted: Tue Nov 13, 2007 6:42 pm Post subject: |
|
|
For some reasons the Clipboard method does not work with the latest MS Word and Wordpad, under Vista. It is OK in Notepad.
Adding some delay (Sleep 50…500) in the _SendUClipboard function between “SendInput ^v” and “Clipboard = ;” fixes the problem. I guess, in the original the Clipboard gets cleared before the sent Ctrl-V could have pasted it. |
|
| Back to top |
|
 |
fmate14
Joined: 28 Oct 2007 Posts: 75 Location: Hungary, Érd
|
Posted: Tue Nov 13, 2007 9:50 pm Post subject: Thank you |
|
|
| Laszlo wrote: | | A few trivial (and unnecessary) simplifications: |
Thank you very much!
Last edited by fmate14 on Wed Nov 14, 2007 4:38 pm; edited 1 time in total |
|
| Back to top |
|
 |
engunneer
Joined: 30 Aug 2005 Posts: 8255 Location: Maywood, IL
|
Posted: Tue Nov 13, 2007 10:12 pm Post subject: |
|
|
please edit the first post to keep it updated. _________________
(Common Answers) |
|
| Back to top |
|
 |
fmate14
Joined: 28 Oct 2007 Posts: 75 Location: Hungary, Érd
|
Posted: Mon Jan 21, 2008 8:56 pm Post subject: UPDATED! |
|
|
I update my script with dynamic mode.
Clipboard mode for TotalCommander, original mode for Firefox, etc.
Easy to use, easy to switch. |
|
| Back to top |
|
 |
Piz
Joined: 15 Feb 2008 Posts: 43
|
Posted: Sun Mar 02, 2008 6:29 pm Post subject: |
|
|
Just a suggestion. Do all of the following:
Step 1. Remove the return that appears immediately before the gosub routine _SendU_Remove_Tooltip.
Step 2. Move the gosub routine _SendU_Remove_Tooltip from its position near the end of the file to inside the function _SendU_Dynamic_Mode_Tooltip, at the very end of the function, with a return immediately preceding it.
Step 3. In the same way, move the gosub routine _SendU_restore_Clipboard from its position near the end of the file to inside the function _SendU__SendU_Clipboard_Mode_Tooltip, at the very end of the function, with a return immediately preceding it.
Step 4. Comment out or delete the gosub routines _SendU_Try_Dynamic_Mode (which is co-labeled with _SendU_Change_Dynamic_Mode) and _SendU_Toggle_Clipboard_Restore_Mode, because they don't appear to be used at all. If they're meant to be used by a script that includes SendU, turn them into functions.
If you do this, the module can be #included anywhere within another script without fear that the return mentioned in Step 1 will cause non-execution of any code that follows the #include. This happened to me when I included SendU near the top of a script I wrote, so I made the above changes and everything works fine.
When you're done, the script should look like this (and if you delete the gosub routines at the end instead of commenting them out, the "LABELS AND INCLUDES" comment will be unnecessary): | Code: | /*
------------------------------------------------------------------------
SendU module for sending Unicode characters
http://www.autohotkey.com
------------------------------------------------------------------------
Version: 0.0.9 2008-01-22 public beta
License: GNU General Public License
Author: FARKAS Máté <http://fmate14.try.hu> (My given name is Máté)
Tested Platform: Windows XP/Vista
Tested AutoHotkey Version: 1.0.47.04
Lastest version: http://autohotkey.try.hu/SendU/SendU.ahk
Contributors:
* Laszlo Hars <www.Hars.US>
original SendU function, _SendU_UnicodeChar function
and some bugfixes
* Shimanov
original SendU function
------------------------------------------------------------------------
If you would like help to me...
Please correct my english misspellings...
------------------------------------------------------------------------
TODO: save/load dynamic modes to/from file
TODO: detect best modes for processes (programs). I need help.
------------------------------------------------------------------------
*/
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; PUBLIC GLOBAL VARIABLES FOR LOCALIZE
; See the _SendU_Load_Locale() function!
; PRIVATE GLOBAL VARIABLES
; _SendU_*** : unicode number -> utf8 character
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; PUBLIC FUNCTIONS
SendCh( Ch ) ; Character number code, for example 97 (or 0x61) for 'a'
{
Ch += 0
if ( Ch < 0 ) {
; What do you want???
return
} else if ( Ch < 33 ) {
; http://en.wikipedia.org/wiki/Control_character#How_control_characters_map_to_keyboards
Char = ;
if ( Ch == 32 ) {
Char = {Space}
} else if ( Ch == 9 ) {
Char = {Tab}
} else if ( Ch > 0 && Ch <= 26 ) {
Char := "^" . Chr( Ch + 64 )
} else if ( Ch == 27 ) {
Char = ^{VKDB}
} else if ( Ch == 28 ) {
Char = ^{VKDC}
} else if ( Ch == 29 ) {
Char = ^{VKDD}
} else {
SendU( Ch )
return
}
Send %Char%
} else if ( Ch < 129 ) {
; ASCII characters
Char := "{" . Chr( Ch ) . "}"
Send %Char%
} else {
; Unicode characters
SendU( Ch )
}
}
SendU( UC )
{
UC += 0
if ( UC <= 0 )
return
mode := SendU_Mode()
if ( mode = "d" ) { ; dymamic
WinGet, pn, ProcessName, A
mode := _SendU_Dynamic_Mode( pn )
}
if ( mode = "i" ) ; input
_SendU_Input(UC)
else if ( mode = "c" ) ; clipboard
_SendU_Clipboard(UC)
else if ( mode = "a" ) { ; {ASC nnnn}
if ( UC < 256 )
UC := "0" . UC
Send {ASC %UC%}
} else {
_SendU_Input(UC)
; If dynamic mode is bad...
; SendU_Mode("d")
; SendU( UC )
}
}
SendU_Mode( newMode = -1 )
{
static mode := "i"
if ( newmode == "d" || newMode == "i" || newmode == "a" || newmode == "c" )
mode := newMode
return mode
}
SendU_Clipboard_Restore_Mode( newMode = -1 )
{
static mode := 1
if ( newMode == 1 || newMode == 0 ) ; Enable, disable
mode := newMode
else if ( newMode == 2 ) ; Toggle
mode := 1 - mode
return mode
}
SendU_Try_Dynamic_Mode()
{
WinGet, processName, ProcessName, A
mode := _SendU_GetMode( processName )
if ( mode == "i" )
mode = a
else if ( mode == "a" )
mode = c
else
mode = i
_SendU_Dynamic_Mode_Tooltip( processName, mode )
_SendU_SetMode( processName, mode )
_SendU_Dynamic_Mode( "", 1 ) ; Clears the PrevProcess variable
}
SendU_Init( mode = "d" )
{
SendU_Mode( mode )
_SendU_Load_Locale()
_SendU_Load_Dynamic_Modes()
}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; PRIVATE FUNCTIONS
_SendU_Input( UC )
{
; Original SendU function written by Shimanov and Laszlo
; http://www.autohotkey.com/forum/topic7328.html
static buffer := "#"
if buffer = #
{
VarSetCapacity( buffer, 56, 0 )
DllCall("RtlFillMemory", "uint",&buffer,"uint",1, "uint", 1)
DllCall("RtlFillMemory", "uint",&buffer+28, "uint",1, "uint", 1)
}
DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&buffer+6, "uint",4,"uint",0x40000|UC) ;KEYEVENTF_UNICODE
DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&buffer+34,"uint",4,"uint",0x60000|UC) ;KEYEVENTF_KEYUP|
Menu, Tray, Icon,,, 1 ; Freeze the icon
Suspend On ; SendInput conflicts with scan codes (SC)!
DllCall("SendInput", UInt,2, UInt,&buffer, Int,28)
Suspend Off
Menu, Tray, Icon,,, 0 ; Unfreeze the icon
return
}
_SendU_Clipboard( UC )
{
Critical
restoreMode := SendU_Clipboard_Restore_Mode()
utf := _SendU_GetVar(UC)
if not utf
{
utf := _SendU_UnicodeChar(UC)
_SendU_SetVar(UC, utf)
}
if restoreMode
_SendU_SaveClipboard()
Transform Clipboard, Unicode, %utf%
ClipWait
SendInput ^v
Sleep, 50 ; see http://www.autohotkey.com/forum/viewtopic.php?p=159301#159306
if restoreMode {
_SendU_Last_Char_In_Clipboard( Clipboard )
SetTimer, _SendU_restore_Clipboard, -3000
}
Critical, Off
return
_SendU_Restore_Clipboard:
Critical
if ( _SendU_Last_Char_In_Clipboard() == Clipboard )
_SendU_RestoreClipboard()
_SendU_Last_Char_In_Clipboard( "" )
Critical, Off
return
}
; --------------------- functions for clipboard mode ----------------------------
_SendU_RestoreClipboard()
{
_SendU_SaveClipboard(1)
}
_SendU_SaveClipboard( restore = 0 )
{
static cb
if ( !restore && _SendU_Last_Char_In_Clipboard() == "" )
cb := ClipboardALL
else
Clipboard := cb
}
_SendU_Last_Char_In_Clipboard( newChar = -1 )
{
static ch := ""
if ( newChar <> -1 )
ch := newChar
return ch
}
_SendU_UnicodeChar( UC ) ; Return the Utf-8 char from the Unicode numeric code (UC)
{ ; Written by Laszlo Hars
VarSetCapacity(UText, 4, 0)
NumPut(UC, UText, 0, "UShort")
VarSetCapacity(AText, 4, 0)
DllCall("WideCharToMultiByte"
, "UInt", 65001 ; CodePage: CP_ACP=0 (current Ansi), CP_UTF7=65000, CP_UTF8=65001
, "UInt", 0 ; dwFlags
, "Str", UText ; LPCWSTR lpWideCharStr
, "Int", -1 ; cchWideChar: size in WCHAR values: Len or -1 (= null terminated)
, "Str", AText ; LPSTR lpMultiByteStr
, "Int", 4 ; cbMultiByte: Len or 0 (= get required size / allocate!)
, "UInt", 0 ; LPCSTR lpDefaultChar
, "UInt", 0) ; LPBOOL lpUsedDefaultChar
return %AText%
}
_SendU_Get_Mode_Name( mode )
{
if ( mode == "c" && SendU_Clipboard_Restore_Mode() )
mode = r
m := _SendU_GetVar( "Mode_Name_" . mode )
if ( m == "" )
m := _SendU_GetVar( "Mode_Name_0" )
return m
}
_SendU_Get_Mode_Type( mode )
{
if ( mode == "c" && SendU_Clipboard_Restore_Mode() )
mode = r
m := _SendU_GetVar( "Mode_Type_" . mode )
if ( m == "" )
m := _SendU_GetVar( "Mode_Type_0" )
return m
}
_SendU_Dynamic_Mode_Tooltip( processName = -1, mode = -1 )
{
tt := _SendU_getVar("DYNAMIC_MODE_TOOLTIP")
if not tt
return
if ( processName = -1 || mode == -1 ) {
WinGet, processName, ProcessName, A
mode := _SendU_GetMode( processName )
}
WinGetTitle, title, A
StringReplace, tt,tt, $processName$, %processName%, A
StringReplace, tt,tt, $title$, %title%, A
StringReplace, tt,tt, $mode$, %mode%, A
StringReplace, tt,tt, $modeType$, % _SendU_Get_Mode_Type( mode ), A
StringReplace, tt,tt, $modeName$, % _SendU_Get_Mode_Name( mode ), A
ToolTip, %tt%
SetTimer, _SendU_Remove_Tooltip, 2000
return
_SendU_Remove_Tooltip:
SetTimer, _SendU_Remove_Tooltip, Off
ToolTip
return
}
_SendU_Dynamic_Mode( processName, clearPrevProcess = -1 )
{
static prevProcess := "fOyj9b4f79YmA7sZRBrnDbp75dGhiauj" ; Nothing
static mode := ""
if ( clearPrevProcess == 1 )
prevProcess := "fOyj9b4f79YmA7sZRBrnDbp75dGhiauj" ; Nothing
if ( processName == prevProcess )
return mode
prevProcess := processName
mode := _SendU_GetMode( processName )
if ( mode == "" )
mode = i
return mode
}
; http://www.autohotkey.com/forum/topic17838.html
_SendU_SetMode( sKey, sItm )
{
static pdic := 0
if ( pdic == 0 )
_SendU_Get_Dictionary( pdic )
pKey := SysAllocString(sKey)
VarSetCapacity(var1, 8 * 2, 0)
EncodeInteger(&var1 + 0, 8)
EncodeInteger(&var1 + 8, pKey)
pItm := SysAllocString(sItm)
VarSetCapacity(var2, 8 * 2, 0)
EncodeInteger(&var2 + 0, 8)
EncodeInteger(&var2 + 8, pItm)
DllCall(VTable(pdic, 8), "Uint", pdic, "Uint", &var1, "Uint", &var2)
SysFreeString(pKey)
SysFreeString(pItm)
}
; http://www.autohotkey.com/forum/topic17838.html
_SendU_GetMode( sKey )
{
static pdic := 0
if ( pdic == 0 )
_SendU_Get_Dictionary( pdic )
pKey := SysAllocString(sKey)
VarSetCapacity(var1, 8 * 2, 0)
EncodeInteger(&var1 + 0, 8)
EncodeInteger(&var1 + 8, pKey)
DllCall(VTable(pdic, 12), "Uint", pdic, "Uint", &var1, "intP", bExist)
If bExist
{
VarSetCapacity(var2, 8 * 2, 0)
DllCall(VTable(pdic, 9), "Uint", pdic, "Uint", &var1, "Uint", &var2)
pItm := DecodeInteger(&var2 + 8)
Unicode2Ansi(pItm, sItm)
SysFreeString(pItm)
}
SysFreeString(pKey)
Return sItm
}
_SendU_Get_Dictionary( ByRef mypdic )
{
static pdic := 0
if ( pdic == 0 ) {
; http://www.autohotkey.com/forum/topic17838.html
CoInitialize()
CLSID_Dictionary := "{EE09B103-97E0-11CF-978F-00A02463E06F}"
IID_IDictionary := "{42C642C1-97E1-11CF-978F-00A02463E06F}"
pdic := CreateObject(CLSID_Dictionary, IID_IDictionary)
DllCall(VTable(pdic, 18), "Uint", pdic, "int", 1) ; Set text mode, i.e., Case of Key is ignored. Otherwise case-sensitive defaultly.
}
mypdic := pdic
}
_SendU_Load_Dynamic_Modes()
{
_SendU_SetMode( "totalcmd.exe", "c" )
_SendU_SetMode( "skype.exe", "c" )
}
; --------------------- other functions ----------------------------
_SendU_SetVar( var, value )
{
global
_SendU_%var% := value
}
_SendU_GetVar( var )
{
global
return _SendU_%var% . ""
}
_SendU_Default_Value( var, value )
{
global
if ( _SendU_%var% . "" == "" )
_SendU_%var% := value
}
_SendU_Load_Locale()
{
stringLower, lang, A_Language
if ( lang == "040e" ) { ; Hungarian
_SendU_Default_Value("DYNAMIC_MODE_TOOLTIP", "Új mód a(z) $processName$ programhoz`n($title$)`n ""$mode$"" ($modeName$ - $modeType$)")
_SendU_Default_Value("Mode_Name_i", "SendInput")
_SendU_Default_Value("Mode_Name_c", "Vágólap")
_SendU_Default_Value("Mode_Name_r", "Vágólap helyreállítással")
_SendU_Default_Value("Mode_Name_a", "Alt+Számbillentyuzet")
_SendU_Default_Value("Mode_Name_d", "Dinamikus")
_SendU_Default_Value("Mode_Name_0", "Ismeretlen")
_SendU_Default_Value("Mode_Type_i", "a legjobb, ha muködik")
_SendU_Default_Value("Mode_Type_c", "törli a vágólapot")
_SendU_Default_Value("Mode_Type_r", "talán lassú")
_SendU_Default_Value("Mode_Type_a", "talán nem muködik")
_SendU_Default_Value("Mode_Type_d", "programoktól függo dinamikus mód")
_SendU_Default_Value("Mode_Type_0", "ismeretlen mód")
} else { ; English -- please, correct my mispellings!
_SendU_Default_Value("DYNAMIC_MODE_TOOLTIP", "New mode for $processName$`n($title$)`nis ""$mode$"" ($modeName$ - $modeType$)")
_SendU_Default_Value("Mode_Name_i", "SendInput")
_SendU_Default_Value("Mode_Name_c", "Clipboard")
_SendU_Default_Value("Mode_Name_r", "Restore Clipboard")
_SendU_Default_Value("Mode_Name_a", "Alt+Numbers")
_SendU_Default_Value("Mode_Name_d", "Dynamic")
_SendU_Default_Value("Mode_Name_0", "Unknown")
_SendU_Default_Value("Mode_Type_i", "the best, if works")
_SendU_Default_Value("Mode_Type_c", "clears the clipboard")
_SendU_Default_Value("Mode_Type_r", "maybe slow")
_SendU_Default_Value("Mode_Type_a", "maybe not work")
_SendU_Default_Value("Mode_Type_d", "dynamic mode for the programs")
_SendU_Default_Value("Mode_Type_0", "unknown mode")
}
}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; LABELS AND INCLUDES
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
/*
_SendU_Try_Dynamic_Mode:
_SendU_Change_Dynamic_Mode:
SendU_Try_Dynamic_Mode()
return
_SendU_Toggle_Clipboard_Restore_Mode:
SendU_Clipboard_Restore_Mode( 2 )
_SendU_Dynamic_Mode_Tooltip()
return
*/
#include CoHelper.ahm
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; END OF SENDU MODULE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
|
|
| Back to top |
|
 |
fmate14
Joined: 28 Oct 2007 Posts: 75 Location: Hungary, Érd
|
Posted: Mon Mar 03, 2008 6:45 pm Post subject: Version 0.0.11 |
|
|
| Piz wrote: | Just a suggestion. Do all of the following:
...
If you do this, the module can be #included anywhere within another script without fear that the return mentioned in Step 1 will cause non-execution of any code that follows the #include. This happened to me when I included SendU near the top of a script I wrote, so I made the above changes and everything works fine. |
Thank your for reporting this. But... you forgot one think: write you as contributor. I upload the new version, you can download, see the first post.
But... issues with #include is... a really problem, not only with my script. (I correct it in this file)
You can use this:
Filename: n.ahk
| Code: | valueOfN = 42
return ; Problem with #include !!! |
Filename m.ahk
| Code: | initn()
{
global
#include n.ahk
}
initn()
MsgBox, %valueOfN% |
_________________ Portable Keyboard Layout
Happy Sunday |
|
| Back to top |
|
 |
Piz
Joined: 15 Feb 2008 Posts: 43
|
Posted: Mon Mar 03, 2008 8:24 pm Post subject: Re: Version 0.0.11 |
|
|
| fmate14 wrote: | Thank your for reporting this. But... you forgot one think: write you as contributor. I upload the new version, you can download, see the first post. |
Thanks, glad to help.
| fmate14 wrote: | But... issues with #include is... a really problem, not only with my script. (I correct it in this file)
You can use this:
Filename: n.ahk
| Code: | valueOfN = 42
return ; Problem with #include !!! |
Filename m.ahk
| Code: | initn()
{
global
#include n.ahk
}
initn()
MsgBox, %valueOfN% |
|
True, unless the included file contains functions, which can't be defined within other functions. We just have to rely on authors to be careful.  |
|
| Back to top |
|
 |
Guest
|
Posted: Mon Mar 03, 2008 9:30 pm Post subject: Re: Version 0.0.11 |
|
|
| Piz wrote: | | True, unless the included file contains functions, which can't be defined within other functions. |
Oh, I forgot this. Sorry.
Then... you can use this:
| Code: | gosub initn
MsgBox, %valueOfN%
initn:
#include n.ahk
return |
|
|
| Back to top |
|
 |
Bernd
Joined: 01 Aug 2006 Posts: 36
|
Posted: Sat Apr 26, 2008 3:00 pm Post subject: shorter procedure? |
|
|
Szia Máté,
I need exactly this function, a SendU that can be switched to using the clipboard.
I just wanted to start programming it myself when I came across this thread.
However, your procedure is quite long (compared to the original Shimanov version that I currently use) and you seem to have added some functions that are convenient but not critically necessary.
How would the code loook like for a SendU just with additional clipboard mode?
Nagyon köszönöm
Bernd |
|
| Back to top |
|
 |
ghie Guest
|
Posted: Sat Feb 27, 2010 3:48 pm Post subject: |
|
|
can this functions handle Null character a.k.a CHR(0)?
I need this Null chraracter in AHK for my project.
Thanks in advance
 |
|
| Back to top |
|
 |
Lexikos
Joined: 17 Oct 2006 Posts: 7291 Location: Australia
|
Posted: Sun Feb 28, 2010 3:04 am Post subject: |
|
|
It seems to send the appropriate message. I confirmed by watching KeyHistory for this:
| Code: | E7 000 i d 0.03 not found
E7 000 i u 0.00 not found
| E7 is VK_PACKET, which is generated by SendInput(). 000 shows the first byte of the Unicode character code.
Most/all controls appear to ignore these null messages; why do you think you need it?
Btw, AHKL supports sending Unicode natively.
| Code: | Send ∞ ; 0x221e
Send {U+0} ; null char, probably won't have any effect
|
|
|
| Back to top |
|
 |
|
|
You can post new topics in this forum You can reply to topics in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|