purebasic.info

PureBasic forum
Текущее время: Ср апр 25, 2018 3:41 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Windows ( как система)
СообщениеДобавлено: Вс окт 10, 2010 6:17 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
Всё, что связано с системой Windows.

Список исходников ( будет пополнятся по мере наполнения)

Системный прогресс диалог
Тип установленной системы ( из реестра)
Серийный номер Windows
Физический адрес (MAC)
Инсталлировать - деинсталлировать свой шрифт в систему
Получение различной информации о локальных настройках
Информация об использовании физической и виртуальной памяти компьютера
Базовые типы переменных Win API в соответствии с PureBasic
Диалоги
Память
Пользователь
Получить информацию о режиме запуска системы
Список констант и их значение
Серийный номер Windows-2
Расширенный режим буфера обмена


_________________
read-only


Последний раз редактировалось kvitaliy Вт мар 05, 2013 12:14 pm, всего редактировалось 13 раз(а).

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Системный прогресс диалог
СообщениеДобавлено: Вс окт 10, 2010 6:18 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
Системный прогресс диалог
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
 
; #PB_Function = 7; если у кого не определено
 
CompilerIf Defined(Ansi2Uni, #PB_Function) = 0
Procedure Ansi2Uni(st$)
  Protected blen
  Protected wbuf
   
  blen = (Len(st$)*2)+2
  wbuf = AllocateMemory(blen)
  MultiByteToWideChar_(#CP_ACP, 0, st$, -1, wbuf, blen)
  ProcedureReturn wbuf
EndProcedure
CompilerEndIf
 
#CLSCTX_INPROC_SERVER = 1
#PROGDLG_NORMAL = 0
#PROGDLG_AUTOTIME = 2
#PDTIMER_RESET = 1
#IDA_COPY_ANIMATION = 160
 
Define ProgressLimit = 1000
Define hr
Define ppv.IProgressDialog
Define *Title
Define hShell
Define *Cancel
Define *Line1
Define dwCompleted
Define *Line2
 
CoInitialize_(0)
hr = CoCreateInstance_(?CLSID_ProgressDialog, #Null, #CLSCTX_INPROC_SERVER, ?IID_IProgressDialog, @ppv.IProgressDialog)
If hr=#S_OK
  *Title = Ansi2Uni("Системный прогресс диалог")
  ppv\SetTitle(*Title)
  hShell = OpenLibrary(0, "shell32.dll")
  If hShell
    ppv\SetAnimation(hShell, #IDA_COPY_ANIMATION)
  EndIf
  *Cancel = Ansi2Uni("Отмена")
  ppv\SetCancelMsg(*Cancel, 0)
  *Line1 = Ansi2Uni("Системный прогресс диалог в PureBasic")
  ppv\SetLine(1, *Line1, #True, 0)
  ppv\StartProgressDialog(#Null, 0, #PROGDLG_AUTOTIME|#PROGDLG_NORMAL, 0)
  ppv\Timer(#PDTIMER_RESET, 0)
  Repeat
    If ppv\HasUserCancelled()
      MessageRequester("Messsage", "Действие отменено")
      Break
    Else
      ppv\SetProgress(dwCompleted, ProgressLimit)
      If dwCompleted>=ProgressLimit
        MessageRequester("Messsage", "Действие выполнено")
        Break
      Else
        dwCompleted+1
        *Line2 = Ansi2Uni("Уже выполнено : "+Str(dwCompleted))
        ppv\SetLine(2, *Line2, #True, 0)
        FreeMemory(*Line2)
      EndIf
    EndIf
    Delay(100)
  ForEver
  ppv\StopProgressDialog()
  ppv\Release()
  FreeMemory(*Title)
  FreeMemory(*Cancel)
  FreeMemory(*Line1)
  If hShell:CloseLibrary(0):EndIf
Else
  Debug Hex(hr)
EndIf
CoUninitialize_()
 
DataSection
CLSID_ProgressDialog:
Data.l $f8383852
Data.w $fcd3, $11d1
Data.b $a6, $b9, 0, $60, $97, $df, $5b, $d4
IID_IProgressDialog:
Data.l $ebbc7c04
Data.w $315e, $11d2
Data.b $b6, $2f, 0, $60, $97, $df, $5b, $d4
EndDataSection


_________________
read-only


Последний раз редактировалось kvitaliy Пн окт 25, 2010 1:22 pm, всего редактировалось 2 раз(а).

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс окт 10, 2010 6:22 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
Тип установленной системы ( из реестра)

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
Procedure.s GetOSName()
  Protected Size
  Protected Name$
  Protected Result
  Protected Key
 
  Size=#MAX_PATH
  Name$=Space(Size)
  Result=RegOpenKeyEx_(#HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Windows NT\CurrentVersion",0,#KEY_ALL_ACCESS,@Key)
  If Result=0
    RegQueryValueEx_(Key,"ProductName",0,0,@Name$,@Size)
    RegCloseKey_(Key)
  EndIf
  ProcedureReturn Name$
EndProcedure
 
MessageRequester("","Тип установленной системы ( из реестра): "+GetOSName(),0)


_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Серийный номер Windows
СообщениеДобавлено: Вс окт 10, 2010 6:25 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
Серийный номер Windows

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
 
Procedure.s sGetXPCDKey()
  Protected *bDigitalProductID
  Protected *bProductKey.b
  Protected ilByte.l
  Protected lDataLen.l
  Protected hKey.l
  Protected Byte.l
  Protected nCur.l
  Protected sCDKey.s
  Protected ilKeyByte.l
 
  *bDigitalProductID = AllocateMemory(164)
  *bProductKey.b = AllocateMemory(15)
  ilByte.l
  lDataLen.l
  hKey.l
 
  If RegOpenKey_(#HKEY_LOCAL_MACHINE, "SOFTWARE\MICROSOFT\Windows NT\CurrentVersion", @hKey) = #ERROR_SUCCESS
    lDataLen = 164
   
    If RegQueryValueEx_(hKey, "DigitalProductId", 0, "REG_BINARY", *bDigitalProductID, @lDataLen) = #ERROR_SUCCESS
     
      For ilByte = 52 To 66
        Byte.l = PeekB(*bDigitalProductID + ilByte) & 255
        PokeB(*bProductKey + ilByte - 52, Byte)
      Next ilByte
      RegCloseKey_(hKey)
    Else
      RegCloseKey_(hKey)
      ProcedureReturn ""
    EndIf
  Else
    ProcedureReturn ""
  EndIf
  Dim bKeyChars.l(23)
 
  bKeyChars(0) = Asc("B")
  bKeyChars(1) = Asc("C")
  bKeyChars(2) = Asc("D")
  bKeyChars(3) = Asc("F")
  bKeyChars(4) = Asc("G")
  bKeyChars(5) = Asc("H")
  bKeyChars(6) = Asc("J")
  bKeyChars(7) = Asc("K")
  bKeyChars(8) = Asc("M")
  bKeyChars(9) = Asc("P")
  bKeyChars(10) = Asc("Q")
  bKeyChars(11) = Asc("R")
  bKeyChars(12) = Asc("T")
  bKeyChars(13) = Asc("V")
  bKeyChars(14) = Asc("W")
  bKeyChars(15) = Asc("X")
  bKeyChars(16) = Asc("Y")
  bKeyChars(17) = Asc("2")
  bKeyChars(18) = Asc("3")
  bKeyChars(19) = Asc("4")
  bKeyChars(20) = Asc("6")
  bKeyChars(21) = Asc("7")
  bKeyChars(22) = Asc("8")
  bKeyChars(23) = Asc("9")
  nCur.l
  sCDKey.s
  ilKeyByte.l
  ilByte.l
  Byte.l
  For ilByte = 24 To 0 Step -1
    nCur = 0
    For ilKeyByte = 14 To 0 Step -1
      Byte = PeekB(*bProductKey + ilKeyByte) & 255
      nCur = ((nCur & 255) * 256) ! Byte
      PokeB(*bProductKey + ilKeyByte, (Int(nCur / 24)))
      nCur = nCur % 24
    Next ilKeyByte
    sCDKey = Chr(bKeyChars(nCur)) + sCDKey
    If ilByte % 5 = 0 And ilByte <> 0
      sCDKey = "-" + sCDKey
    EndIf
  Next ilByte
 
  ProcedureReturn sCDKey
EndProcedure
 
MessageRequester("","Windows-серийный номер: "+sGetXPCDKey(),0)


_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Физический адрес (MAC)
СообщениеДобавлено: Вс окт 10, 2010 6:28 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
Физический адрес (MAC)
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
Procedure.s GetIpAddr(ComputerName.s)
  Protected wsa.WSADATA
  Protected *host.HOSTENT
 
  If ComputerName
    If WSAStartup_((1<<8|1), wsa.WSADATA) = #NOERROR
      *host.HOSTENT = gethostbyname_(ComputerName)
      WSACleanup_()
      If *host
        ProcedureReturn PeekS(inet_ntoa_(PeekL(PeekL(*host\h_addr_list))))
      EndIf
    EndIf
  EndIf
EndProcedure
 
Procedure.s GetMacAddr(IP.s)
  Protected n.l
  Protected i
  Protected MAC$
 
  n.l = 6
  Dim MacAddr.b(n)
  If SendARP_(inet_addr_(IP), 0, @MacAddr(0), @n) = #NO_ERROR
    For i = 0 To n - 2
      MAC$ + RSet(Hex(MacAddr(i)&255),2,"0") + ":"
    Next
    ProcedureReturn MAC$ + RSet(Hex(MacAddr(i)&255),2,"0")
  EndIf
EndProcedure
 
Procedure.s GetHostName()
  Protected Size.l
  Protected Host.s
 
  Size.l = 32
  Host.s = Space(Size)
  GetComputerName_(@Host, @Size)
  ProcedureReturn Host
EndProcedure
 
MessageRequester("","Физический адрес (MAC): "+GetMacAddr(GetIpAddr(GetHostName())),0)


_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс окт 10, 2010 6:31 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
Инсталлировать - деинсталлировать свой шрифт в систему

Код:
1
2
3
4
5
6
7
8
9
10
11
12
 
Procedure InstallAdditionalFonts(font$)
  AddFontResource_(font$)
  SendMessage_(#HWND_BROADCAST,#WM_FONTCHANGE,0,0)
EndProcedure
 
Procedure DeinstallAdditionalFonts(Font$)
  RemoveFontResource_(font$)
  SendMessage_(#HWND_BROADCAST,#WM_FONTCHANGE,0,0)
EndProcedure
 
InstallAdditionalFonts("НовыйШрифт.ttf")


_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн окт 25, 2010 1:25 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
Получение различной информации о локальных настройках

Код:
1
2
3
4
5
 szLocaleData.s {255}
 LCID.l=GetSystemDefaultLCID_();
 GetLocaleInfo_(LCID,#LOCALE_SENGLANGUAGE,@szLocaleData,SizeOf(szLocaleData))
 Debug szLocaleData
 



Константы:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#LOCALE_NOUSEROVERRIDE ; do Not use user overrides 
#LOCALE_USE_CP_ACP ; use the system ACP
#LOCALE_ILANGUAGE ; language id
#LOCALE_SLANGUAGE ; localized name of language
#LOCALE_SENGLANGUAGE ; English name of language
#LOCALE_SABBREVLANGNAME ; abbreviated language name
#LOCALE_SNATIVELANGNAME ; native name of language
#LOCALE_ICOUNTRY ; country code  
#LOCALE_SCOUNTRY ; localized name of country  
#LOCALE_SENGCOUNTRY ; English name of country  
#LOCALE_SABBREVCTRYNAME ; abbreviated country name  
#LOCALE_SNATIVECTRYNAME ; native name of country  
#LOCALE_IDEFAULTLANGUAGE ; Default language id  
#LOCALE_IDEFAULTCOUNTRY ; Default country code  
#LOCALE_IDEFAULTCODEPAGE ; Default oem code page  
#LOCALE_IDEFAULTANSICODEPAGE ; Default ansi code page  
#LOCALE_IDEFAULTMACCODEPAGE ; Default mac code page  
#LOCALE_SLIST ; List item separator  
#LOCALE_IMEASURE ; 0 = metric, 1 = US  
#LOCALE_SDECIMAL ; decimal separator  
#LOCALE_STHOUSAND ; thousand separator  
#LOCALE_SGROUPING ; digit grouping  
#LOCALE_IDIGITS ; number of fractional digits  
#LOCALE_ILZERO ; leading zeros For decimal  
#LOCALE_INEGNUMBER ; negative number mode  
#LOCALE_SNATIVEDIGITS ; native ascii 0-9  
#LOCALE_SCURRENCY ; local monetary symbol  
#LOCALE_SINTLSYMBOL ; intl monetary symbol  
#LOCALE_SMONDECIMALSEP ; monetary decimal separator  
#LOCALE_SMONTHOUSANDSEP ; monetary thousand separator  
#LOCALE_SMONGROUPING ; monetary grouping  
#LOCALE_ICURRDIGITS ; # local monetary digits  
#LOCALE_IINTLCURRDIGITS ; # intl monetary digits  
#LOCALE_ICURRENCY ; positive currency mode  
#LOCALE_INEGCURR ; negative currency mode  
#LOCALE_SDATE ; date separator
#LOCALE_STIME ; time separator  
#LOCALE_SSHORTDATE ; short date format string  
#LOCALE_SLONGDATE ; long date format string  
#LOCALE_STIMEFORMAT ; time format string  
#LOCALE_IDATE ; short date format ordering  
#LOCALE_ILDATE ; long date format ordering  
#LOCALE_ITIME ; time format specifier  
#LOCALE_ITIMEMARKPOSN ; time marker position  
#LOCALE_ICENTURY ; century format specifier (short date)  
#LOCALE_ITLZERO ; leading zeros in time field  
#LOCALE_IDAYLZERO ; leading zeros in day field (short date)  
#LOCALE_IMONLZERO ; leading zeros in month field (short date)  
#LOCALE_S1159 ; AM designator  
#LOCALE_S2359 ; PM designator  
#LOCALE_ICALENDARTYPE ; type of calendar specifier  
#LOCALE_IOPTIONALCALENDAR ; additional calendar types specifier  
#LOCALE_IFIRSTDAYOFWEEK ; first day of week specifier  
#LOCALE_IFIRSTWEEKOFYEAR ; first week of year specifier  
#LOCALE_SDAYNAME1 ; long name For Monday  
#LOCALE_SDAYNAME2 ; long name For Tuesday  
#LOCALE_SDAYNAME3 ; long name For Wednesday  
#LOCALE_SDAYNAME4 ; long name For Thursday  
#LOCALE_SDAYNAME5 ; long name For Friday  
#LOCALE_SDAYNAME6 ; long name For Saturday  
#LOCALE_SDAYNAME7 ; long name For Sunday  
#LOCALE_SABBREVDAYNAME1 ; abbreviated name For Monday  
#LOCALE_SABBREVDAYNAME2 ; abbreviated name For Tuesday  
#LOCALE_SABBREVDAYNAME3 ; abbreviated name For Wednesday  
#LOCALE_SABBREVDAYNAME4 ; abbreviated name For Thursday  
#LOCALE_SABBREVDAYNAME5 ; abbreviated name For Friday  
#LOCALE_SABBREVDAYNAME6 ; abbreviated name For Saturday
#LOCALE_SABBREVDAYNAME7 ; abbreviated name For Sunday  
#LOCALE_SMONTHNAME1 ; long name For January  
#LOCALE_SMONTHNAME2 ; long name For February  
#LOCALE_SMONTHNAME3 ; long name For March  
#LOCALE_SMONTHNAME4 ; long name For April  
#LOCALE_SMONTHNAME5 ; long name For May  
#LOCALE_SMONTHNAME6 ; long name For June  
#LOCALE_SMONTHNAME7 ; long name For July  
#LOCALE_SMONTHNAME8 ; long name For August  
#LOCALE_SMONTHNAME9 ; long name For September  
#LOCALE_SMONTHNAME10 ; long name For October  
#LOCALE_SMONTHNAME11 ; long name For November  
#LOCALE_SMONTHNAME12 ; long name For December  
#LOCALE_SMONTHNAME13 ; long name For 13th Month (If exists)  
#LOCALE_SABBREVMONTHNAME1 ; abbreviated name For January  
#LOCALE_SABBREVMONTHNAME2 ; abbreviated name For February  
#LOCALE_SABBREVMONTHNAME3 ; abbreviated name For March  
#LOCALE_SABBREVMONTHNAME4 ; abbreviated name For April  
#LOCALE_SABBREVMONTHNAME5 ; abbreviated name For May  
#LOCALE_SABBREVMONTHNAME6 ; abbreviated name For June  
#LOCALE_SABBREVMONTHNAME7 ; abbreviated name For July  
#LOCALE_SABBREVMONTHNAME8 ; abbreviated name For August  
#LOCALE_SABBREVMONTHNAME9 ; abbreviated name For September  
#LOCALE_SABBREVMONTHNAME10 ; abbreviated name For October  
#LOCALE_SABBREVMONTHNAME11 ; abbreviated name For November  
#LOCALE_SABBREVMONTHNAME12 ; abbreviated name For December  
#LOCALE_SABBREVMONTHNAME13 ; abbreviated name For 13th Month (If exists)  
#LOCALE_SPOSITIVESIGN ; positive sign  
#LOCALE_SNEGATIVESIGN ; negative sign  
#LOCALE_IPOSSIGNPOSN ; positive sign position  
#LOCALE_INEGSIGNPOSN ; negative sign position
#LOCALE_IPOSSYMPRECEDES ; mon sym precedes pos amt  
#LOCALE_IPOSSEPBYSPACE ; mon sym sep by space from pos amt  
#LOCALE_INEGSYMPRECEDES ; mon sym precedes neg amt  
#LOCALE_INEGSEPBYSPACE ; mon sym sep by space from neg amt  
#LOCALE_FONTSIGNATURE ; font signature  
#LOCALE_SISO639LANGNAME ; ISO abbreviated language name  
#LOCALE_SISO3166CTRYNAME ; ISO abbreviated country name
 
 


_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср май 18, 2011 5:13 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
Информация об использовании физической и виртуальной памяти компьютера



Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
;Функция GlobalMemoryStatus из библиотеки Kernel32.dll предоставляет информацию
;об использовании физической и виртуальной памяти компьютера в структуре MEMORYSTATUSEX.
GlobalMemoryStatusEx_(lpBuffer.MEMORYSTATUSEX)
;  Structure MEMORYSTATUSEX
;    dwLength.l                    ;    Размер структуры
;    dwMemoryLoad.l                ;    Процент использования памяти
;    ullTotalPhys.q                ;    Физическая память, байт
;    ullAvailPhys.q                ;    Свободная физическая память, байт
;    ullTotalPageFile.q            ;    Размер файла подкачки, байт
;    ullAvailPageFile.q            ;    Свободных байт в файле подкачки
;    ullTotalVirtual.q             ;    Виртуальная память, используемая процессом
;    ullAvailVirtual.q             ;    Свободная виртуальная память
;    ullAvailExtendedVirtual.q     ;    Reserved. This value is always 0.
;  EndStructure
 
 


_________________
read-only


Последний раз редактировалось kvitaliy Пт июн 24, 2011 6:56 pm, всего редактировалось 3 раз(а).

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Базовые типы переменных Win API
СообщениеДобавлено: Ср июн 22, 2011 7:16 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
Код, который показывает соответствие базовых типов переменных, используемых в Win API к типам переменных в PureBasic:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
 
;http://www.purebasic.fr/english/viewtopic.php?f=12&t=36689&sid=e95de689bff5bda03f684eb3bba0122d
;Rescator, 2009
 
EnableExplicit
 
Structure _type_list_lookup_struct_
type$
base$
note$
core.i
EndStructure
 
Macro AddTypeToTypelist(typeval,baseval,noteval="",coreval=#False)
typelist(size)\type$=typeval
typelist(size)\base$=baseval
typelist(size)\note$=noteval
typelist(size)\core=coreval
size+1
ReDim typelist(size)
EndMacro
 
Procedure.s GetTypeType(type$)
Static init.i=#False,Dim typelist._type_list_lookup_struct_(0),size.i
Protected result$,endpos.i,i.i,n.i,lc.i=#False,uc.i=#False
If Not init
  ;Core native types, base types and derivatives rely on these.
  AddTypeToTypelist("NATIVE_BYTE",".b or .Byte","1 byte",#True)
  AddTypeToTypelist("NATIVE_WORD",".w or .Word","2 bytes",#True)
  AddTypeToTypelist("NATIVE_LONG",".l or .Long","4 bytes",#True)
  AddTypeToTypelist("NATIVE_CHAR",".c or .Character","1 bytes (ascii) or 2 bytes (unicode)",#True)
  AddTypeToTypelist("NATIVE_INT",".i or .Integer","4 bytes (x86) / 8 bytes (x64)",#True)
  AddTypeToTypelist("NATIVE_POINTER","* (pointer)","4 bytes (x86) / 8 bytes (x64)",#True)
  AddTypeToTypelist("NATIVE_QUAD",".q or .Quad","8 bytes",#True)
  AddTypeToTypelist("NATIVE_FLOAT",".f or .Float","4 bytes",#True)
  AddTypeToTypelist("NATIVE_DOUBLE",".d or .Double","8 bytes",#True)
  AddTypeToTypelist("","no native equivalent",".i or .Integer might work",#True)
  ;Base types that the rest of the list may reference.
  AddTypeToTypeList("*pointer","NATIVE_POINTER","normal pointer")
  AddTypeToTypeList("__ptrdiff_type__","NATIVE_INT","for pointer arithmetic, alternatively a *pointer")
  AddTypeToTypeList("__int8","NATIVE_BYTE","signed")
  AddTypeToTypeList("unsigned __int8","NATIVE_BYTE","unsigned")
  AddTypeToTypeList("__int16","NATIVE_WORD","signed")
  AddTypeToTypeList("unsigned __int16","NATIVE_WORD","unsigned")
  AddTypeToTypeList("__int32","NATIVE_LONG","signed")
  AddTypeToTypeList("unsigned __int32","NATIVE_LONG","unsigned")
  AddTypeToTypeList("__int64","NATIVE_QUAD","signed")
  AddTypeToTypeList("unsigned __int64","NATIVE_QUAD","unsigned")
  AddTypeToTypeList("__wchar_t","unsigned short","wide char/unicode")
  AddTypeToTypeList("float","NATIVE_FLOAT")
  AddTypeToTypeList("double","NATIVE_DOUBLE")
  ;Base type variants, and specials
  AddTypeToTypeList("char","__int8",)
  AddTypeToTypeList("unsigned char","unsigned __int8")
  AddTypeToTypeList("short"," __int16")
  AddTypeToTypeList("unsigned short","unsigned __int16")
  AddTypeToTypeList("int","__int32")
  AddTypeToTypeList("unsigned int","unsigned __int32")
  AddTypeToTypeList("long","__int32")
  AddTypeToTypeList("unsigned long","unsigned __int32")
  AddTypeToTypeList("long long","__int64")
  AddTypeToTypeList("unsigned long long","unsigned __int64")
  AddTypeToTypeList("void","","could be anything")
  AddTypeToTypeList("signed","__int32")
  AddTypeToTypeList("unsigned","unsigned __int32")
  AddTypeToTypeList("short int","__int16")
  AddTypeToTypeList("long int","__int32")
  AddTypeToTypeList("long long int","__int64")
  AddTypeToTypeList("signed short int","__int16")
  AddTypeToTypeList("signed long","__int64")
  AddTypeToTypeList("signed long int","__int32")
  AddTypeToTypeList("signed long long int","__int64")
  AddTypeToTypeList("unsigned short int","unsigned __int16")
  AddTypeToTypeList("unsigned long int","unsigned __int32")
  AddTypeToTypeList("unsigned long long int","unsigned __int64")
  AddTypeToTypeList("long double","double")
  AddTypeToTypeList("wchar_t","__wchar_t")
  AddTypeToTypeList("__ptr32","__int32","pointer on x86, truncated pointer on x64")
  AddTypeToTypeList("__ptr64","__int64","pointer on x64, sign extended pointer on x86")
  AddTypeToTypeList("__stdcall","*pointer","pointer to standard WINAPI function")
  AddTypeToTypeList("__cdecl","*pointer","pointer to C style function")
  AddTypeToTypeList("__fastcall","*pointer","a special variant of __stdcall")
  AddTypeToTypeList("__clrcall","*pointer","a special variant of __stdcall")
  AddTypeToTypeList("const","","specifies this is a constant typed var similar to Define <var>.<type>=<val>")
  AddTypeToTypeList("__sptr","*pointer","signed")
  AddTypeToTypeList("__uptr","*pointer","unsigned")
  AddTypeToTypeList("unsigned __ptrdiff_type__","NATIVE_INT","for pointer arithmetic, alternatively a *pointer, unsigned")
  AddTypeToTypeList("*halfpointer","","16bit on x86 / 32bit on x64, no native equivalent, signed")
  AddTypeToTypeList("unsigned *halfpointer","","16bit on x86 / 32bit on x64, no native equivalent, unsigned")
  ;Derivatives. Add new types to the following list, they are listed alphabetically, be aware of possible cross-references in it.
  AddTypeToTypeList("ATOM","WORD")
  AddTypeToTypeList("BOOL","int")
  AddTypeToTypeList("BOOLEAN","BYTE")
  AddTypeToTypeList("BYTE","unsigned char")
  AddTypeToTypeList("CALLBACK","__stdcall")
  AddTypeToTypeList("CHAR","char")
  AddTypeToTypeList("COLORREF","DWORD")
  AddTypeToTypeList("CONST","const")
  AddTypeToTypeList("DWORD","unsigned long")
  AddTypeToTypeList("DWORDLONG","ULONGLONG")
  AddTypeToTypeList("DWORD_PTR","ULONG_PTR")
  AddTypeToTypeList("DWORD32","unsigned int")
  AddTypeToTypeList("DWORD64","unsigned __int64")
  AddTypeToTypeList("FLOAT","float")
  AddTypeToTypeList("HACCEL","HANDLE")
  AddTypeToTypeList("HALF_PTR","*halfpointer")
  AddTypeToTypeList("HANDLE","PVOID")
  AddTypeToTypeList("HBITMAP","HANDLE")
  AddTypeToTypeList("HBRUSH","HANDLE")
  AddTypeToTypeList("HCOLORSPACE","HANDLE")
  AddTypeToTypeList("HCONV","HANDLE")
  AddTypeToTypeList("HCONVLIST","HANDLE")
  AddTypeToTypeList("HCURSOR","HICON")
  AddTypeToTypeList("HDC","HANDLE")
  AddTypeToTypeList("HDDEDATA","HANDLE")
  AddTypeToTypeList("HDESK","HANDLE")
  AddTypeToTypeList("HDROP","HANDLE")
  AddTypeToTypeList("HDWP","HANDLE")
  AddTypeToTypeList("HENHMETAFILE","HANDLE")
  AddTypeToTypeList("HFILE","int")
  AddTypeToTypeList("HFONT","HANDLE")
  AddTypeToTypeList("HGDIOBJ","HANDLE")
  AddTypeToTypeList("HGLOBAL","HANDLE")
  AddTypeToTypeList("HHOOK","HANDLE")
  AddTypeToTypeList("HICON","HANDLE")
  AddTypeToTypeList("HINSTANCE","HANDLE")
  AddTypeToTypeList("HKEY","HANDLE")
  AddTypeToTypeList("HKL","HANDLE")
  AddTypeToTypeList("HLOCAL","HANDLE")
  AddTypeToTypeList("HMENU","HANDLE")
  AddTypeToTypeList("HMETAFILE","HANDLE")
  AddTypeToTypeList("HMODULE","HANDLE")
  AddTypeToTypeList("HMONITOR","HANDLE")
  AddTypeToTypeList("HPALETTE","HANDLE")
  AddTypeToTypeList("HPEN","HANDLE")
  AddTypeToTypeList("HRESULT","LONG")
  AddTypeToTypeList("HRGN","HANDLE")
  AddTypeToTypeList("HRSRC","HANDLE")
  AddTypeToTypeList("HSZ","HANDLE")
  AddTypeToTypeList("HWINSTA","HANDLE")
  AddTypeToTypeList("HWND","HANDLE")
  AddTypeToTypeList("INT","int")
  AddTypeToTypeList("INT_PTR","__ptrdiff_type__")
  AddTypeToTypeList("INT32","signed int")
  AddTypeToTypeList("INT64","signed __int64")
  AddTypeToTypeList("LANGID","WORD")
  AddTypeToTypeList("LCID","DWORD")
  AddTypeToTypeList("LCTYPE","DWORD")
  AddTypeToTypeList("LGRPID","DWORD")
  AddTypeToTypeList("LONG","long")
  AddTypeToTypeList("LONGLONG","__int64")
  AddTypeToTypeList("LONG_PTR","__ptrdiff_type__")
  AddTypeToTypeList("LONG32","signed int")
  AddTypeToTypeList("LONG64","__int64")
  AddTypeToTypeList("LPARAM","LONG_PTR")
  AddTypeToTypeList("LPBOOL","*pointer")
  AddTypeToTypeList("LPBYTE","*pointer")
  AddTypeToTypeList("LPCOLORREF","*pointer")
  AddTypeToTypeList("LPCSTR","*pointer")
  AddTypeToTypeList("LPCTSTR","*pointer")
  AddTypeToTypeList("LPCVOID","*pointer")
  AddTypeToTypeList("LPCWSTR","*pointer")
  AddTypeToTypeList("LPDWORD","*pointer")
  AddTypeToTypeList("LPHANDLE","*pointer")
  AddTypeToTypeList("LPINT","*pointer")
  AddTypeToTypeList("LPLONG","*pointer")
  AddTypeToTypeList("LPSTR","*pointer")
  AddTypeToTypeList("LPTSTR","*pointer")
  AddTypeToTypeList("LPVOID","*pointer")
  AddTypeToTypeList("LPWORD","*pointer")
  AddTypeToTypeList("LPWSTR","*pointer")
  AddTypeToTypeList("LRESULT","*pointer")
  AddTypeToTypeList("PBOOL","*pointer")
  AddTypeToTypeList("PBOOLEAN","*pointer")
  AddTypeToTypeList("PBYTE","*pointer")
  AddTypeToTypeList("PCHAR","*pointer")
  AddTypeToTypeList("PCSTR","*pointer")
  AddTypeToTypeList("PCTSTR","*pointer")
  AddTypeToTypeList("PCWSTR","*pointer")
  AddTypeToTypeList("PDWORD","*pointer")
  AddTypeToTypeList("PDWORDLONG","*pointer")
  AddTypeToTypeList("PDWORD_PTR","*pointer")
  AddTypeToTypeList("PDWORD32","*pointer")
  AddTypeToTypeList("PDWORD64","*pointer")
  AddTypeToTypeList("PFLOAT","*pointer")
  AddTypeToTypeList("PHALF_PTR","*pointer")
  AddTypeToTypeList("PHANDLE","*pointer")
  AddTypeToTypeList("PHKEY","*pointer")
  AddTypeToTypeList("PINT","*pointer")
  AddTypeToTypeList("PINT_PTR","*pointer")
  AddTypeToTypeList("PINT32","*pointer")
  AddTypeToTypeList("PINT64","*pointer")
  AddTypeToTypeList("PLCID","*pointer")
  AddTypeToTypeList("PLONG","*pointer")
  AddTypeToTypeList("PLONGLONG","*pointer")
  AddTypeToTypeList("PLONG_PTR","*pointer")
  AddTypeToTypeList("PLONG32","*pointer")
  AddTypeToTypeList("PLONG64","*pointer")
  AddTypeToTypeList("POINTER_32","__ptr32")
  AddTypeToTypeList("POINTER_64","__ptr64")
  AddTypeToTypeList("POINTER_SIGNED","__sptr")
  AddTypeToTypeList("POINTER_UNSIGNED","__uptr")
  AddTypeToTypeList("PSHORT","*pointer")
  AddTypeToTypeList("PSIZE_T","*pointer")
  AddTypeToTypeList("PSSIZE_T","*pointer")
  AddTypeToTypeList("PSTR","*pointer")
  AddTypeToTypeList("PTBYTE","*pointer")
  AddTypeToTypeList("PTCHAR","*pointer")
  AddTypeToTypeList("PTSTR","*pointer")
  AddTypeToTypeList("PUCHAR","*pointer")
  AddTypeToTypeList("PUHALF_PTR","*pointer")
  AddTypeToTypeList("PUINT","*pointer")
  AddTypeToTypeList("PUINT_PTR","*pointer")
  AddTypeToTypeList("PUINT32","*pointer")
  AddTypeToTypeList("PUINT64","*pointer")
  AddTypeToTypeList("PULONG","*pointer")
  AddTypeToTypeList("PULONGLONG","*pointer")
  AddTypeToTypeList("PULONG_PTR","*pointer")
  AddTypeToTypeList("PULONG32","*pointer")
  AddTypeToTypeList("PULONG64","*pointer")
  AddTypeToTypeList("PUSHORT","*pointer")
  AddTypeToTypeList("PVOID","*pointer")
  AddTypeToTypeList("PWCHAR","*pointer")
  AddTypeToTypeList("PWORD","*pointer")
  AddTypeToTypeList("PWSTR","*pointer")
  AddTypeToTypeList("SC_HANDLE","HANDLE")
  AddTypeToTypeList("SC_LOCK","LPVOID")
  AddTypeToTypeList("SERVICE_STATUS_HANDLE","HANDLE")
  AddTypeToTypeList("SHORT","SHORT")
  AddTypeToTypeList("SIZE_T","ULONG_PTR")
  AddTypeToTypeList("SSIZE_T","LONG_PTR")
  AddTypeToTypeList("TBYTE","NATIVE_CHAR")
  AddTypeToTypeList("TCHAR","NATIVE_CHAR")
  AddTypeToTypeList("UCHAR","unsigned char")
  AddTypeToTypeList("UHALF_PTR","unsigned *halfpointer")
  AddTypeToTypeList("UINT","NATIVE_LONG")
  AddTypeToTypeList("UINT_PTR","unsigned __ptrdiff_type__")
  AddTypeToTypeList("UINT32","unsigned int")
  AddTypeToTypeList("UINT64","usigned __int64")
  AddTypeToTypeList("ULONG","unsigned long")
  AddTypeToTypeList("ULONGLONG","unsigned __int64")
  AddTypeToTypeList("ULONG_PTR","unsigned __ptrdiff_type__")
  AddTypeToTypeList("ULONG32","unsigned int")
  AddTypeToTypeList("ULONG64","unsigned __int64")
  AddTypeToTypeList("UNICODE_STRING","*pointer")
  AddTypeToTypeList("USHORT","unsigned shor")
  AddTypeToTypeList("USN","LONGLONG")
  AddTypeToTypeList("VOID","void")
  AddTypeToTypeList("WCHAR","wchar_t")
  AddTypeToTypeList("WINAPI","__stdcall")
  AddTypeToTypeList("WORD","unsigned short")
  AddTypeToTypeList("WPARAM","UINT_PTR")
  ;Phew, that's it (for now).
  init=#True
EndIf
endpos=size-1
For i=0 To endpos
  If typelist(i)\type$=type$
   n+1
   If typelist(i)\core
    result$+#CRLF$+"Z. "+"PB type = "+typelist(i)\base$+" ("+typelist(i)\note$+")"+#CRLF$
    Break
   Else
    If typelist(i)\note$<>""
     result$+Str(n)+". "+typelist(i)\type$+" = "+typelist(i)\note$+#CRLF$
    Else
     result$+Str(n)+". "+typelist(i)\type$+#CRLF$
    EndIf
    type$=typelist(i)\base$
    i=0
   EndIf
  Else
   If i>=endpos
    If Not lc
     type$=LCase(type$)
     lc=#True
     i=0
     Continue
    Else
     If Not uc
      type$=UCase(type$)
      uc=#True
      i=0
      Continue
     EndIf
    EndIf
    Break
   EndIf
  EndIf
Next
If result$=""
  result$="No match!"
EndIf
ProcedureReturn result$
EndProcedure
 
;Example
 
Define match$
Repeat
match$=InputRequester("Recursive match-chain lookup of WinAPI types!","Enter type to match with PureBasic native type:","")
If match$
  MessageRequester("Recursive match-chain result:",GetTypeType(match$))
EndIf
Until match$=""


_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Диалоги
СообщениеДобавлено: Чт май 03, 2012 9:33 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
Диалоги

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
; Открыть оно свойства: даты и времени
SendMessage_(FindWindow_("Shell_TrayWnd",""),#WM_COMMAND,$198,0)
 
; Открывает диалог "Запуск программы")
SendMessage_(FindWindow_("Shell_TrayWnd",""),#WM_COMMAND,$191,0)
 
; Открывает диалог выключения\перезагрузки
SendMessage_(FindWindow_("Shell_TrayWnd",""),#WM_COMMAND,$1FA,0)
 
; Открывает диалог смена пользователя/выход
SendMessage_(FindWindow_("Shell_TrayWnd",""),#WM_COMMAND,$192,0)
 
; Открывает диалог перезагрузки системы
SetupPromptReboot_(0,0,0)
 
; Открывает диалог поиска файла
SetupPromptForDisk_(0,"Найти файл","Programm","Папка ","Setup.exe","Programm",0,0,0,0)
 
; Открывает диалог смены иконки
Define IcoLibPath$ = "C:\Windows\System32\shell32.dll"
Define DlgResult
Define hWnd=0
Define DefaultIconID = 4
If OpenLibrary(0,"Shell32.dll")
  Prototype.l PickIconDlg(hwnd,pszIconPath.p-unicode,cchIconPath,piIconIndex)
  Define PickIconDlg.PickIconDlg = GetFunction(0,"PickIconDlg")  
  DlgResult = PickIconDlg(hWnd,IcoLibPath$,Len(IcoLibPath$),@DefaultIconID)
  If DlgResult = 0
    MessageRequester("","Иконка не выбрана.",0)
  Else
    MessageRequester("","Номер иконки: "+Str(DefaultIconID),0)
  EndIf
EndIf
 
; Открывает диалог о программе
ShellAbout_(0,"Programm","Teststring",0)
 
; Открывает диалог подключение сетевого диска
WNetConnectionDialog_(0,#RESOURCETYPE_DISK)
 



Материал предоставил pablov

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Память
СообщениеДобавлено: Чт май 03, 2012 9:37 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
Получение информации о памяти
Код:
1
2
3
4
5
6
7
8
9
10
11
12
 
memex.MEMORYSTATUSEX
memex\dwLength = SizeOf(MEMORYSTATUSEX)
GlobalMemoryStatusEx_(@memex)
txt.s = Str(memex\dwMemoryLoad) + "%"        + "  Использованно памяти"+ Chr(10)
txt = txt + Str(memex\ullTotalPhys/1024)     + "  Доступно физической памяти (в килобайтах)"+ Chr(10)
txt = txt + Str(memex\ullTotalPageFile/1024) + "  Всего виртуальной памяти (в килобайтах)"+ Chr(10)
txt = txt + Str(memex\ullAvailPageFile/1024) + "  Доступно виртуальной памяти (в килобайтах)"+ Chr(10)
txt = txt + Str(memex\ullTotalVirtual/1024)  + "  Адресное виртуальное простанство текущего процесса"+ Chr(10)
txt = txt + Str(memex\ullAvailVirtual/1024)  + "  Доступно байт виртуального адресного пространства текущего процесса"
MessageRequester("",txt,0)
 


_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Пользователь
СообщениеДобавлено: Чт май 03, 2012 9:40 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
Смена пользователя

Код:
1
ExitWindowsEx_(#EWX_LOGOFF,0)



Имя пользователя

Код:
1
2
3
4
String$ = Space(255)
GetEnvironmentVariable_("USERNAME",@String$,Len(String$))
MessageRequester("","Имя пользователя: "+String$,0)
 



Папка Default User

Код:
1
2
3
4
Define Path$ = Space(255)
GetDefaultUserProfileDirectory_(@Path$,@Path$)
MessageRequester("","Папка Default User: "+Path$+"\",0)
 



Материал предоставил pablov

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 05, 2012 7:28 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
Получить информацию о режиме запуска системы
Код:
1
2
3
4
5
6
7
8
9
 
        Select GetSystemMetrics_(#SM_CLEANBOOT)
          Case 0
            Debug "нормальная загрузка"
          Case 1
            Debug "безопасный режим"
          Case 2
            Debug "безопасный режим с поддержкой сети"
        EndSelect


_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Список констант и их значение
СообщениеДобавлено: Пт июн 29, 2012 8:01 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
Список констант RELEASE April 2008

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 05, 2013 12:12 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
Серийный номер винды
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Procedure.s sGetXPCDKey()
  Protected *bDigitalProductID
  Protected *bProductKey
  Protected ilByte.l
  Protected lDataLen.l
  Protected hKey.l
  Protected Byte.l
  Protected nCur.l
  Protected sCDKey.s
  Protected ilKeyByte.l
 
  *bDigitalProductID = AllocateMemory(164)
  *bProductKey = AllocateMemory(15)
  ilByte.l
  lDataLen.l
  hKey.l
 
  If RegOpenKey_(#HKEY_LOCAL_MACHINE, "SOFTWARE\MICROSOFT\Windows NT\CurrentVersion", @hKey) = #ERROR_SUCCESS
    lDataLen = 164
   
    If RegQueryValueEx_(hKey, "DigitalProductId", 0, "REG_BINARY", *bDigitalProductID, @lDataLen) = #ERROR_SUCCESS
     
      For ilByte = 52 To 66
        Byte.l = PeekB(*bDigitalProductID + ilByte) & 255
        PokeB(*bProductKey + ilByte - 52, Byte)
      Next ilByte
      RegCloseKey_(hKey)
    Else
      RegCloseKey_(hKey)
      ProcedureReturn ""
    EndIf
  Else
    ProcedureReturn ""
  EndIf
  nCur.l
  sCDKey.s
  ilKeyByte.l
  ilByte.l
  Byte.l
  For ilByte = 24 To 0 Step -1
    nCur = 0
    For ilKeyByte = 14 To 0 Step -1
      Byte = PeekB(*bProductKey + ilKeyByte) & 255
      nCur = ((nCur & 255) * 256) ! Byte
      PokeB(*bProductKey + ilKeyByte, (Int(nCur / 24)))
      nCur = nCur % 24
    Next ilKeyByte
    sCDKey = Chr(nCur+66) + sCDKey
    If ilByte % 5 = 0 And ilByte <> 0
      sCDKey = "-" + sCDKey
    EndIf
  Next ilByte
 
  ProcedureReturn sCDKey
EndProcedure
MessageRequester("","Windows-серийный номер: "+sGetXPCDKey(),0)



Прислал Никита Однороб

_________________
read-only


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB