--- a/Win32OperatingSystem.st Fri Jan 04 17:19:30 2013 +0100
+++ b/Win32OperatingSystem.st Tue Jan 08 18:55:11 2013 +0100
@@ -256,6 +256,8 @@
/* # define SIGNALDEBUGWIN32 /* */
# undef INT
+# undef UINT
+
# undef Array
# undef Number
# undef Method
@@ -276,6 +278,8 @@
# undef Process
# undef NameSpace
# undef Processor
+# undef String
+# undef Character
# include <stdarg.h> /* */
@@ -369,8 +373,15 @@
# ifdef __DEF_NameSpace
# define NameSpace __DEF_NameSpace
# endif
-
-# define INT int
+# ifdef __DEF_String
+# define String __DEF_String
+# endif
+# ifdef __DEF_Character
+# define Character __DEF_Character
+# endif
+
+# define INT STX_INT
+# define UINT STX_UINT
typedef int (*intf)(int);
BOOL __signalUserInterruptWIN32(DWORD sig);
@@ -3768,7 +3779,7 @@
^ self primitiveFailed
!
-shellExecute:hwnd lpOperation:lpOperation lpFile:lpFile lpParameters:lpParameters lpDirectory:lpDirectory nShowCmd:nShowCmd
+shellExecute:hwndArg lpOperation:lpOperationArg lpFile:lpFileArg lpParameters:lpParametersArg lpDirectory:lpDirectoryArg nShowCmd:nShowCmd
"Opens or prints the specified file, which can be an executable, document file, or directory.
If its a directory, an explorer window is opened (see example below).
Can be used to open a browser or viewer on html-files, pdf-files etc"
@@ -3808,22 +3819,22 @@
goto badArgument;
}
}
- if (((lpOperation == nil) || __isStringLike(lpOperation))
- && ((lpFile == nil) || __isStringLike(lpFile))
- && ((lpParameters == nil) || __isStringLike(lpParameters))
- && ((lpDirectory == nil) || __isStringLike(lpDirectory))
+ if (((lpOperationArg == nil) || __isStringLike(lpOperationArg))
+ && ((lpFileArg == nil) || __isStringLike(lpFileArg))
+ && ((lpParametersArg == nil) || __isStringLike(lpParametersArg))
+ && ((lpDirectoryArg == nil) || __isStringLike(lpDirectoryArg))
) {
// hProcess member receives the process handle
shExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
shExecInfo.hwnd = 0;
- shExecInfo.lpVerb = (lpOperation != nil) ? __stringVal(lpOperation) : NULL;
- shExecInfo.lpFile = (lpFile != nil) ? __stringVal(lpFile) : NULL;
- shExecInfo.lpParameters = (lpParameters != nil) ? __stringVal(lpParameters) : NULL;
- shExecInfo.lpDirectory = (lpDirectory != nil) ? __stringVal(lpDirectory) : NULL;
- if (hwnd != nil) {
- if (__isExternalAddressLike(hwnd)) {
- shExecInfo.hwnd = (HANDLE)(__externalAddressVal(hwnd));
+ shExecInfo.lpVerb = (lpOperationArg != nil) ? __stringVal(lpOperationArg) : NULL;
+ shExecInfo.lpFile = (lpFileArg != nil) ? __stringVal(lpFileArg) : NULL;
+ shExecInfo.lpParameters = (lpParametersArg != nil) ? __stringVal(lpParametersArg) : NULL;
+ shExecInfo.lpDirectory = (lpDirectoryArg != nil) ? __stringVal(lpDirectoryArg) : NULL;
+ if (hwndArg != nil) {
+ if (__isExternalAddressLike(hwndArg)) {
+ shExecInfo.hwnd = (HANDLE)(__externalAddressVal(hwndArg));
} else
goto badArgument;
}
@@ -3859,7 +3870,7 @@
self primitiveFailed:'invalid argument(s)'.
] ifFalse:[
(OperatingSystem errorHolderForNumber:errorNumber)
- parameter:lpFile;
+ parameter:lpFileArg;
reportError
].
@@ -5489,8 +5500,8 @@
attr := self primGetFileAttributes:aPathName.
attr notNil ifTrue:[
- ^ (attr bitAnd: (FILE_ATTRIBUTE_DIRECTORY bitOr: FILE_ATTRIBUTE_READONLY ))
- ~~ FILE_ATTRIBUTE_READONLY
+ ^ (attr bitAnd: (FILE_ATTRIBUTE_DIRECTORY bitOr: FILE_ATTRIBUTE_READONLY ))
+ ~~ FILE_ATTRIBUTE_READONLY
].
^ false
@@ -6903,18 +6914,18 @@
spaceForTargetHandle := ExternalLong unprotectedNew.
hMe := self getCurrentProcess.
rslt := self
- primDuplicateHandle_hSourcProcessHandle:hMe
- hSourceHandle:aHandle
- hTargetProcesshandle:targetProcessHandle
- lpTargetHandle:spaceForTargetHandle
- dwDesiredAccess:0
- bInheritHandle:false
- dwOptions:2 "DUPLICATE_SAME_ACCESS".
+ primDuplicateHandle_hSourcProcessHandle:hMe
+ hSourceHandle:aHandle
+ hTargetProcesshandle:targetProcessHandle
+ lpTargetHandle:spaceForTargetHandle
+ dwDesiredAccess:0
+ bInheritHandle:false
+ dwOptions:2 "DUPLICATE_SAME_ACCESS".
rslt ifFalse:[
- spaceForTargetHandle free.
- self primitiveFailed.
- ^ nil
+ spaceForTargetHandle free.
+ self primitiveFailed.
+ ^ nil
].
addr := spaceForTargetHandle value.
@@ -7949,25 +7960,25 @@
This method is mainly provided to augment error reports with some system
information.
(in case of system/version specific OS errors, conditional workarounds and patches
- may be based upon this info).
+ may be based upon this info).
Your application should NOT depend upon this in any way.
The returned info may (or may not) contain:
- #system -> some operating system identification (irix, Linux, nt, win32s ...)
- #version -> OS version (some os version identification)
- #release -> OS release (3.5, 1.2.1 ...)
- #node -> some host identification (hostname)
- #domain -> domain name (hosts domain)
- #machine -> type of machine (i586, mips ...)
+ #system -> some operating system identification (irix, Linux, nt, win32s ...)
+ #version -> OS version (some os version identification)
+ #release -> OS release (3.5, 1.2.1 ...)
+ #node -> some host identification (hostname)
+ #domain -> domain name (hosts domain)
+ #machine -> type of machine (i586, mips ...)
win32:
- #physicalRam -> total amount of physical memory
- #freeRam -> amount of free memory
- #swapSize -> size of swapSpace (page file)
- #freeSwap -> free bytes in swapSpace
- #virtualRam -> total amount of virtual memory
- #freeVirtual -> amount of free virtual memory
- #memoryLoad -> percentage of memory usage (useless)
+ #physicalRam -> total amount of physical memory
+ #freeRam -> amount of free memory
+ #swapSize -> size of swapSpace (page file)
+ #freeSwap -> free bytes in swapSpace
+ #virtualRam -> total amount of virtual memory
+ #freeVirtual -> amount of free virtual memory
+ #memoryLoad -> percentage of memory usage (useless)
"
|sys node rel ver minorVer majorVer mach dom info arch
@@ -7993,23 +8004,23 @@
majorVer = __mkSmallInteger(verMajor);
if (HIWORD(vsn) & 0x8000) {
- sys = @symbol(win95);
+ sys = @symbol(win95);
} else {
- if ((verMajor > 5)
- || ((verMajor == 5) && (verMinor >= 1))) {
- sys = @symbol(xp);
- if (verMajor >= 6) {
- sys = @symbol(vista);
- if (verMinor >= 1) {
- sys = @symbol(win7);
- if (verMinor >= 2) {
- sys = @symbol(win8);
- }
- }
- }
- } else {
- sys = @symbol(nt);
- }
+ if ((verMajor > 5)
+ || ((verMajor == 5) && (verMinor >= 1))) {
+ sys = @symbol(xp);
+ if (verMajor >= 6) {
+ sys = @symbol(vista);
+ if (verMinor >= 1) {
+ sys = @symbol(win7);
+ if (verMinor >= 2) {
+ sys = @symbol(win8);
+ }
+ }
+ }
+ } else {
+ sys = @symbol(nt);
+ }
}
len = snprintf(vsnBuffer, sizeof(vsnBuffer), "%d.%d", verMajor, verMinor);
rel = __MKSTRING_L(vsnBuffer, len);
@@ -8035,160 +8046,160 @@
#endif
{
#ifdef PROCESSOR_ARCHITECTURE_INTEL
- case PROCESSOR_ARCHITECTURE_INTEL:
- arch = @symbol(intel);
- break;
+ case PROCESSOR_ARCHITECTURE_INTEL:
+ arch = @symbol(intel);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_AMD64
- case PROCESSOR_ARCHITECTURE_AMD64:
- arch = @symbol(x64);
- break;
+ case PROCESSOR_ARCHITECTURE_AMD64:
+ arch = @symbol(x64);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_MIPS
- case PROCESSOR_ARCHITECTURE_MIPS:
- arch = @symbol(mips);
- break;
+ case PROCESSOR_ARCHITECTURE_MIPS:
+ arch = @symbol(mips);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_ALPHA
- case PROCESSOR_ARCHITECTURE_ALPHA:
- arch = @symbol(alpha);
- break;
+ case PROCESSOR_ARCHITECTURE_ALPHA:
+ arch = @symbol(alpha);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_ALPHA64
- case PROCESSOR_ARCHITECTURE_ALPHA64:
- arch = @symbol(alpha64);
- break;
+ case PROCESSOR_ARCHITECTURE_ALPHA64:
+ arch = @symbol(alpha64);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_PPC
- case PROCESSOR_ARCHITECTURE_PPC:
- arch = @symbol(ppc);
- break;
+ case PROCESSOR_ARCHITECTURE_PPC:
+ arch = @symbol(ppc);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_ARM
- case PROCESSOR_ARCHITECTURE_ARM:
- arch = @symbol(arm);
- break;
+ case PROCESSOR_ARCHITECTURE_ARM:
+ arch = @symbol(arm);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_SHX
- case PROCESSOR_ARCHITECTURE_SHX:
- arch = @symbol(shx);
- break;
+ case PROCESSOR_ARCHITECTURE_SHX:
+ arch = @symbol(shx);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_IA64
- case PROCESSOR_ARCHITECTURE_IA64:
- arch = @symbol(ia64);
- break;
+ case PROCESSOR_ARCHITECTURE_IA64:
+ arch = @symbol(ia64);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_MSIL
- case PROCESSOR_ARCHITECTURE_MSIL:
- arch = @symbol(msil);
- break;
-#endif
- default:
- arch = @symbol(unknown);
- break;
+ case PROCESSOR_ARCHITECTURE_MSIL:
+ arch = @symbol(msil);
+ break;
+#endif
+ default:
+ arch = @symbol(unknown);
+ break;
}
switch (sysInfo.dwProcessorType) {
#ifdef PROCESSOR_INTEL_386
- case PROCESSOR_INTEL_386:
- mach = @symbol(i386);
- break;
+ case PROCESSOR_INTEL_386:
+ mach = @symbol(i386);
+ break;
#endif
#ifdef PROCESSOR_INTEL_486
- case PROCESSOR_INTEL_486:
- mach = @symbol(i486);
- break;
+ case PROCESSOR_INTEL_486:
+ mach = @symbol(i486);
+ break;
#endif
#ifdef PROCESSOR_INTEL_PENTIUM
- case PROCESSOR_INTEL_PENTIUM:
- mach = @symbol(i586);
- break;
+ case PROCESSOR_INTEL_PENTIUM:
+ mach = @symbol(i586);
+ break;
#endif
#ifdef PROCESSOR_INTEL_860
- case PROCESSOR_INTEL_860:
- mach = @symbol(i860);
- break;
+ case PROCESSOR_INTEL_860:
+ mach = @symbol(i860);
+ break;
#endif
#ifdef PROCESSOR_INTEL_IA64
- case PROCESSOR_INTEL_IA64:
- mach = @symbol(ia64);
- break;
+ case PROCESSOR_INTEL_IA64:
+ mach = @symbol(ia64);
+ break;
#endif
#ifdef PROCESSOR_MIPS_R2000
- case PROCESSOR_MIPS_R2000:
- mach = @symbol(r2000);
- break;
+ case PROCESSOR_MIPS_R2000:
+ mach = @symbol(r2000);
+ break;
#endif
#ifdef PROCESSOR_MIPS_R3000
- case PROCESSOR_MIPS_R3000:
- mach = @symbol(r3000);
- break;
+ case PROCESSOR_MIPS_R3000:
+ mach = @symbol(r3000);
+ break;
#endif
#ifdef PROCESSOR_MIPS_R4000
- case PROCESSOR_MIPS_R4000:
- mach = @symbol(r4000);
- break;
+ case PROCESSOR_MIPS_R4000:
+ mach = @symbol(r4000);
+ break;
#endif
#ifdef PROCESSOR_ALPHA_21064
- case PROCESSOR_ALPHA_21064:
- mach = @symbol(alpha21064);
- break;
+ case PROCESSOR_ALPHA_21064:
+ mach = @symbol(alpha21064);
+ break;
#endif
#ifdef PROCESSOR_ARM720
- case PROCESSOR_ARM720:
- mach = @symbol(arm720);
- break;
+ case PROCESSOR_ARM720:
+ mach = @symbol(arm720);
+ break;
#endif
#ifdef PROCESSOR_ARM820
- case PROCESSOR_ARM820:
- mach = @symbol(arm820);
- break;
+ case PROCESSOR_ARM820:
+ mach = @symbol(arm820);
+ break;
#endif
#ifdef PROCESSOR_ARM920
- case PROCESSOR_ARM920:
- mach = @symbol(arm920);
- break;
+ case PROCESSOR_ARM920:
+ mach = @symbol(arm920);
+ break;
#endif
#ifdef PROCESSOR_ARM_7TDMI
- case PROCESSOR_ARM_7TDMI:
- mach = @symbol(arm70001);
- break;
+ case PROCESSOR_ARM_7TDMI:
+ mach = @symbol(arm70001);
+ break;
#endif
#ifdef PROCESSOR_PPC_601
- case PROCESSOR_PPC_601:
- mach = @symbol(ppc601);
- break;
+ case PROCESSOR_PPC_601:
+ mach = @symbol(ppc601);
+ break;
#endif
#ifdef PROCESSOR_PPC_603
- case PROCESSOR_PPC_603:
- mach = @symbol(ppc603);
- break;
+ case PROCESSOR_PPC_603:
+ mach = @symbol(ppc603);
+ break;
#endif
#ifdef PROCESSOR_PPC_604
- case PROCESSOR_PPC_604:
- mach = @symbol(ppc604);
- break;
+ case PROCESSOR_PPC_604:
+ mach = @symbol(ppc604);
+ break;
#endif
#ifdef PROCESSOR_PPC_620
- case PROCESSOR_PPC_620:
- mach = @symbol(ppc620);
- break;
-#endif
-
- default:
- sprintf(vsnBuffer, "%d", sysInfo.dwProcessorType);
- mach = __MKSTRING(vsnBuffer);
- break;
+ case PROCESSOR_PPC_620:
+ mach = @symbol(ppc620);
+ break;
+#endif
+
+ default:
+ sprintf(vsnBuffer, "%d", sysInfo.dwProcessorType);
+ mach = __MKSTRING(vsnBuffer);
+ break;
}
numberOfCPUs = __MKUINT(sysInfo.dwNumberOfProcessors);
%}.
node isNil ifTrue:[
- node := self getHostName.
+ node := self getHostName.
].
dom isNil ifTrue:[
- dom := self getDomainName.
+ dom := self getDomainName.
].
info := IdentityDictionary new.
@@ -8959,9 +8970,9 @@
"Modified: / 16-04-2007 / 13:09:16 / cg"
!
-deletePrinterDC: hwnd
+deletePrinterDC: hwndArg
|return|
- return := self primDeletePrinterDC:hwnd .
+ return := self primDeletePrinterDC:hwndArg .
^return
"Created: / 27-07-2006 / 16:22:34 / fm"
@@ -9040,8 +9051,8 @@
"Modified: / 04-10-2006 / 11:35:18 / cg"
!
-getDeviceCaps:hwnd index: index
- ^ self primGetDeviceCaps:hwnd index: index
+getDeviceCaps:hwndArg index: index
+ ^ self primGetDeviceCaps:hwndArg index: index
"Created: / 28-07-2006 / 17:45:27 / fm"
"Modified: / 04-10-2006 / 11:35:29 / cg"
@@ -9236,7 +9247,7 @@
"Created: / 27-07-2006 / 14:40:41 / fm"
!
-primAbortDoc:hwnd
+primAbortDoc:hwndArg
<apicall: int32 "AbortDoc" (handle) module: "gdi32.dll" >
self primitiveFailed.
@@ -9266,7 +9277,7 @@
"Modified: / 27-07-2006 / 16:26:25 / fm"
!
-primDeletePrinterDC: hwnd
+primDeletePrinterDC: hwndArg
<apicall: bool "DeleteDC" ( handle ) module: "gdi32.dll" >
self primitiveFailed.
!
@@ -9293,7 +9304,7 @@
"Created: / 27-07-2006 / 15:02:14 / fm"
!
-primEndDoc:hwnd
+primEndDoc:hwndArg
<apicall: int32 "EndDoc" (handle) module: "gdi32.dll" >
self primitiveFailed.
@@ -9315,7 +9326,7 @@
"Created: / 27-07-2006 / 19:31:31 / fm"
!
-primEndPage:hwnd
+primEndPage:hwndArg
<apicall: int32 "EndPage" (handle) module: "gdi32.dll" >
self primitiveFailed.
@@ -9337,7 +9348,7 @@
"Created: / 27-07-2006 / 19:30:50 / fm"
!
-primGetDeviceCaps:hwnd index: index
+primGetDeviceCaps:hwndArg index: index
"Returns driver specific information about the device"
<apicall: int32 "GetDeviceCaps" (handle int32) module: "gdi32.dll" >
@@ -9347,7 +9358,7 @@
"Modified: / 04-10-2006 / 11:38:06 / cg"
!
-primGetPrinter:hwnd level:index informationBuffer:informationBuffer bufferSize:bufferSize bufferNeededSize:bufferNeededSize
+primGetPrinter:hwndArg level:index informationBuffer:informationBuffer bufferSize:bufferSize bufferNeededSize:bufferNeededSize
<apicall: bool "GetPrinterA" (handle dword pointer dword pointer) module: "winspool.drv" >
self primitiveFailed.
@@ -9425,7 +9436,7 @@
self primitiveFailed.
!
-primStartDoc:hwnd docInfo: aDocInfo
+primStartDoc:hwndArg docInfo: aDocInfo
"Returns a jobId"
<apicall: int32 "StartDocA" (handle pointer) module: "gdi32.dll" >
self primitiveFailed.
@@ -9433,7 +9444,7 @@
"Modified: / 31-07-2006 / 11:47:10 / fm"
!
-primStartPage:hwnd
+primStartPage:hwndArg
<apicall: int32 "StartPage" (handle) module: "gdi32.dll" >
self primitiveFailed.
@@ -13498,174 +13509,174 @@
examples
"
retrieve an existing entry by key:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'
+ [exEnd]
retrieve a non-existing entry by key:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\xxx'
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\xxx'
+ [exEnd]
ask a keys value:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion'.
- Transcript show:'Windows serial NR:'; showCR:(k valueNamed:'ProductId').
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
- Transcript showCR:(k valueNamed:'CurrentVersion').
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion'.
+ Transcript show:'Windows serial NR:'; showCR:(k valueNamed:'ProductId').
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
+ Transcript showCR:(k valueNamed:'CurrentVersion').
+ [exEnd]
create a sub-key (if not already present):
- [exBegin]
- |k subKey|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
- subKey := k createSubKeyNamed:'RegistryDemo'
- [exEnd]
+ [exBegin]
+ |k subKey|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
+ subKey := k createSubKeyNamed:'RegistryDemo'
+ [exEnd]
change a keys value:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X\RegistryDemo'.
- k valueNamed:'FooBarBaz' put:'a foo bar baz string'.
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X\RegistryDemo'.
+ k valueNamed:'FooBarBaz' put:'a foo bar baz string'.
+ [exEnd]
delete a value:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X\RegistryDemo'.
- k deleteValueNamed:'FooBarBaz'.
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X\RegistryDemo'.
+ k deleteValueNamed:'FooBarBaz'.
+ [exEnd]
delete a key:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
- k deleteSubKeyNamed:'RegistryDemo'.
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
+ k deleteSubKeyNamed:'RegistryDemo'.
+ [exEnd]
enumerate keys:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software'.
- k subKeysDo:[:subKey |
- Transcript showCR:subKey path
- ]
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software'.
+ k subKeysDo:[:subKey |
+ Transcript showCR:subKey path
+ ]
+ [exEnd]
enumerate all keys (recursive):
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software'.
- k allSubKeysDo:[:subKey |
- Transcript showCR:subKey path
- ]
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software'.
+ k allSubKeysDo:[:subKey |
+ Transcript showCR:subKey path
+ ]
+ [exEnd]
fetch value by index:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
- Transcript showCR:(k valueNameAtIndex:0)
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
+ Transcript showCR:(k valueNameAtIndex:0)
+ [exEnd]
enumerate value names:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
- k valueNamesDo:[:nm |
- Transcript showCR:nm.
- ]
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
+ k valueNamesDo:[:nm |
+ Transcript showCR:nm.
+ ]
+ [exEnd]
enumerate values:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
- k valueNamesAndValuesDo:[:nm :val |
- Transcript showCR:(nm , ' -> ' , val storeString).
- ]
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
+ k valueNamesAndValuesDo:[:nm :val |
+ Transcript showCR:(nm , ' -> ' , val storeString).
+ ]
+ [exEnd]
search for a value (where does NT store the domain ?):
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\System'.
- k subKeysDo:[:subKey |
- subKey subKeysDo:[:subSubKey |
- |tcp params|
-
- (subSubKey path asLowercase endsWith:'services') ifTrue:[
- tcp := subSubKey subKeyNamed:'tcpip'.
- tcp notNil ifTrue:[
- params := tcp subKeyNamed:'parameters'.
- params notNil ifTrue:[
- Transcript showCR:'Domain is found in ' , params path ,
- ' value: ' , (params valueNamed:'Domain').
- params close.
- ].
- tcp close.
- ]
- ]
- ]
- ]
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\System'.
+ k subKeysDo:[:subKey |
+ subKey subKeysDo:[:subSubKey |
+ |tcp params|
+
+ (subSubKey path asLowercase endsWith:'services') ifTrue:[
+ tcp := subSubKey subKeyNamed:'tcpip'.
+ tcp notNil ifTrue:[
+ params := tcp subKeyNamed:'parameters'.
+ params notNil ifTrue:[
+ Transcript showCR:'Domain is found in ' , params path ,
+ ' value: ' , (params valueNamed:'Domain').
+ params close.
+ ].
+ tcp close.
+ ]
+ ]
+ ]
+ ]
+ [exEnd]
register an exe for shell-open:
- [exBegin]
- |k stx shell open cmd st_af edit st owl list id|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_CURRENT_USER\Software\Classes\Applications'.
- stx := k createSubKeyNamed:'SmalltalkX.exe'.
- shell := stx createSubKeyNamed:'shell'.
- open := shell createSubKeyNamed:'open'.
- cmd := open createSubKeyNamed:'command'.
- cmd defaultValue:(Character doubleQuote asString,OperatingSystem nameOfSTXExecutable,Character doubleQuote,
- ' ',Character doubleQuote,'%1',Character doubleQuote).
-
- k := Win32OperatingSystem registryEntry key:'HKEY_CURRENT_USER\Software\Classes'.
- st_af := k createSubKeyNamed:'st_auto_file'.
- shell := st_af createSubKeyNamed:'shell'.
- open := shell createSubKeyNamed:'open'.
- cmd := open createSubKeyNamed:'command'.
- cmd defaultValue:(Character doubleQuote asString,OperatingSystem nameOfSTXExecutable,Character doubleQuote,
- ' --open ',Character doubleQuote,'%1',Character doubleQuote).
- edit := shell createSubKeyNamed:'edit'.
- cmd := edit createSubKeyNamed:'command'.
- cmd defaultValue:(Character doubleQuote asString,OperatingSystem nameOfSTXExecutable,Character doubleQuote,
- ' --edit ',Character doubleQuote,'%1',Character doubleQuote).
-
- k := Win32OperatingSystem registryEntry key:'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts'.
- st := k createSubKeyNamed:'.st'.
- owl := st createSubKeyNamed:'OpenWithList'.
- list := owl valueNames.
- (list contains:[:k | (owl valueNamed:k) = 'SmalltalkX.exe']) ifTrue:[
- Transcript showCR:'already registered.'.
- ] ifFalse:[
- id := ($a to:$z) detect:[:k | (list includes:(k asString)) not] ifNone:nil.
- owl valueNamed:id asString put:'SmalltalkX.exe'.
- ]
- [exEnd]
+ [exBegin]
+ |k stx shell open cmd st_af edit st owl list id|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_CURRENT_USER\Software\Classes\Applications'.
+ stx := k createSubKeyNamed:'SmalltalkX.exe'.
+ shell := stx createSubKeyNamed:'shell'.
+ open := shell createSubKeyNamed:'open'.
+ cmd := open createSubKeyNamed:'command'.
+ cmd defaultValue:(Character doubleQuote asString,OperatingSystem nameOfSTXExecutable,Character doubleQuote,
+ ' ',Character doubleQuote,'%1',Character doubleQuote).
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_CURRENT_USER\Software\Classes'.
+ st_af := k createSubKeyNamed:'st_auto_file'.
+ shell := st_af createSubKeyNamed:'shell'.
+ open := shell createSubKeyNamed:'open'.
+ cmd := open createSubKeyNamed:'command'.
+ cmd defaultValue:(Character doubleQuote asString,OperatingSystem nameOfSTXExecutable,Character doubleQuote,
+ ' --open ',Character doubleQuote,'%1',Character doubleQuote).
+ edit := shell createSubKeyNamed:'edit'.
+ cmd := edit createSubKeyNamed:'command'.
+ cmd defaultValue:(Character doubleQuote asString,OperatingSystem nameOfSTXExecutable,Character doubleQuote,
+ ' --edit ',Character doubleQuote,'%1',Character doubleQuote).
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts'.
+ st := k createSubKeyNamed:'.st'.
+ owl := st createSubKeyNamed:'OpenWithList'.
+ list := owl valueNames.
+ (list contains:[:k | (owl valueNamed:k) = 'SmalltalkX.exe']) ifTrue:[
+ Transcript showCR:'already registered.'.
+ ] ifFalse:[
+ id := ($a to:$z) detect:[:k | (list includes:(k asString)) not] ifNone:nil.
+ owl valueNamed:id asString put:'SmalltalkX.exe'.
+ ]
+ [exEnd]
@@ -14382,25 +14393,25 @@
if (__isExternalAddressLike(__INST(handle))
&& __isSmallInteger(valueIndex)) {
- myKey = (HKEY)__externalAddressVal(__INST(handle));
- if ((_retVal = RegEnumValueA(myKey, __intVal(valueIndex),
- nameBuffer, &nameSize,
- NULL,
- &valueType,
- NULL, NULL)) == ERROR_SUCCESS) {
- nameBuffer[nameSize] = '\0';
- valueName = __MKSTRING(nameBuffer);
- } else {
- if ((_retVal != ERROR_PATH_NOT_FOUND)
- && (_retVal != ERROR_FILE_NOT_FOUND)
- && (_retVal != ERROR_NO_MORE_ITEMS)) {
- errorNumber = __MKSMALLINT(_retVal);
- }
- }
+ myKey = (HKEY)__externalAddressVal(__INST(handle));
+ if ((_retVal = RegEnumValueA(myKey, __intVal(valueIndex),
+ nameBuffer, &nameSize,
+ NULL,
+ &valueType,
+ NULL, NULL)) == ERROR_SUCCESS) {
+ nameBuffer[nameSize] = '\0';
+ valueName = __MKSTRING(nameBuffer);
+ } else {
+ if ((_retVal != ERROR_PATH_NOT_FOUND)
+ && (_retVal != ERROR_FILE_NOT_FOUND)
+ && (_retVal != ERROR_NO_MORE_ITEMS)) {
+ errorNumber = __MKSMALLINT(_retVal);
+ }
+ }
}
%}.
errorNumber notNil ifTrue:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportError.
+ (OperatingSystem errorHolderForNumber:errorNumber) reportError.
].
^ valueName
@@ -14850,12 +14861,12 @@
idx := 0.
[true] whileTrue:[
- valueName := self valueNameAtIndex:idx.
- valueName isNil ifTrue:[
- ^self
- ].
- aBlock value:valueName.
- idx := idx + 1.
+ valueName := self valueNameAtIndex:idx.
+ valueName isNil ifTrue:[
+ ^self
+ ].
+ aBlock value:valueName.
+ idx := idx + 1.
]
! !
@@ -14925,7 +14936,7 @@
HKEY key;
OBJ t;
- key = __longIntVal(integerHandleValue);
+ key = (HKEY)__longIntVal(integerHandleValue);
if (! key) {
RETURN (nil);
}
@@ -15203,9 +15214,13 @@
errSym = @symbol(badArgument);
goto bad;
}
+#if __POINTER_SIZE__ == 8
+ posLo = pos64 & 0xFFFFFFFF;
+ posHi = (pos64 >> 32) & 0xFFFFFFFF;
+#else
posLo = pos64.lo;
posHi = pos64.hi;
-
+#endif
posLo = SetFilePointer(hFile, posLo, &posHi, moveHow);
if (posLo == 0xFFFFFFFF) {
int lastError;
@@ -15221,10 +15236,14 @@
if (posHi == 0) {
RETURN (__MKUINT( posLo ));
}
+#if __POINTER_SIZE__ == 8
+ newPos64 = posLo | (posHi << 32);
+ RETURN ( __MKUINT(newPos64) );
+#else
newPos64.lo = posLo;
newPos64.hi = posHi;
-
RETURN ( __MKUINT64(&newPos64) );
+#endif
bad: ;
%}.
@@ -16452,11 +16471,11 @@
!Win32OperatingSystem class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.442 2012-11-21 16:34:54 anwild Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.443 2013-01-08 17:55:11 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.442 2012-11-21 16:34:54 anwild Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.443 2013-01-08 17:55:11 cg Exp $'
!
version_SVN