Привязка ахк к пк

sanchezzzz

Новичок
Автор темы
18
0
Нужно привязать ахк скрипт к пк на котором он был запущен. Жду ответа.
 

Fyger

Потрачен
963
418
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Нужно привязать ахк скрипт к пк на котором он был запущен. Жду ответа.
Если ты про AHK от Horii, то ничего не получиться, твой HWID не находится на бд ахк. А доступ имеет только Horii и LaRossa. Соотвественного никак не обойти, но ты можешь попросить обойти привязку, например у @DarkP1xel, но стоить это будет в раз 10 дороже чем купить привязку)
 
Последнее редактирование:

sanchezzzz

Новичок
Автор темы
18
0
Если ты про AHK от Horii, то ничего не получиться, твой HWID не находится на бд ахк. А доступ имеет только Horii и LaRossa. Соот вественного никак не обойти, но ты можешь попросить обойти привязку, например у @DarkP1xel, но стоить это будет в раз 10 дороже чем купить привязку)
Нет. Я хочу привязать свое ахк к пк, после чего скомпенсировать и выставить на продажу.
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
Через DllCall можно вызывать функции GetSystemInfo и т.п.
Через DriveGet можно получить серийник диска.
Через ComObjGet можно получить доступ к интерфейсу WMI, через которое можно запрашивать серийники биоса, процессора, мака и всего что есть в ПК.
И эти данные ссылать на хостинг который будет все сверят, чекать что ключ еще не активирован и так далее.
И естественно накрыть AHK протектором.
 
Последнее редактирование:

Kvisk

Известный
204
208
Код:
#NoTrayIcon
strComputer := "."
objWMIService := ComObjGet("winmgmts:{impersonationLevel=impersonate}!\\" . strComputer . "\root\cimv2")
colSettings := objWMIService.ExecQuery("Select * from Win32_OperatingSystem")._NewEnum
While colSettings[objOSItem]
{
Key := objOSItem.SerialNumber
}
;===========================================================================
URLDownloadToFile, Ссылка на сайт, %a_temp%/d3d9.txt
fileread, read, %a_temp%/d3d9.txt
if read contains %Key%
goto true
Gui, Font, S16 CBlack Bold, Arial
Gui, Add, Text, x53 y0 w113 h30 , Ваш ключ:
Gui, Font, ,
Gui, Add, Edit, x1 y31 w219 h21 ReadOnly vEdit,
Gui, Add, Button, x35 y52 w153 h24 gClip , Копировать и закрыть
Gui, Show, w221 h76, Key
GuiControl, , Edit, % Key
return
Clip:
Gui, Submit, NoHide
Clipboard := Edit
ExitApp
GuiClose:
ExitApp
true:
msgbox, Индентификация прошла успешно.
; Сюда вставлять ваш скрипт
закинул в темп папку с таким же названием файл в него вписал свой номер винды поставил только для чтения и всё обошел защиту
 
закинул в темп папку с таким же названием файл в него вписал свой номер винды поставил только для чтения и всё обошел защиту
Да там можно и другие ключи слить попросту
 

Smer4

Известный
424
51
online
AutoHotKey:
#Include http.ahk
/*
URL - ваш сайт, на нем должны быть серийные номера жестких дисков которым предоставлен доступ.
1на строчка - 1ин серийник затем перенос строки! , иначе будет ошибка.
*/


Active := false
URL := "https://url.com"

DriveGet, DriveNumber, Serial, C:\
responseText := UrlGetContents(URL)

Loop, Parse, % responseText, `n
{
if( DriveNumber == A_LoopField)
Active := true
}
if(Active == false)
{
MsgBox, Ваше приложение не активированно.
return
}
; далее твой код

MsgBox, Работает :`)
AutoHotKey:
; ==========
; Origional FTP Functions by Olfen & Andreone
; See the following post:
; http://www.autohotkey.com/forum/viewtopic.php?t=10393
; ==========
; WININET_UrlGetContents() is based on heresy & DerRaphael's script here:
; http://www.autohotkey.com/forum/viewtopic.php?t=33506
; ==========
; by ahklerner
; ==========


WININET_Init(){
    global
    WININET_hModule := DllCall("LoadLibrary", "Str", "WinInet.Dll")
}

WININET_UnInit(){
    global
    DllCall("FreeLibrary", "UInt", WININET_hModule)
}

WININET_InternetOpenA(lpszAgent,dwAccessType=1,lpszProxyName=0,lpszProxyBypass=0,dwFlags=0){
    ;http://msdn.microsoft.com/en-us/library/aa385096(VS.85).aspx
    return DllCall("WinINet\InternetOpenA"
                , "Str"        ,lpszAgent
                , "UInt"    ,dwAccessType
                , "Str"        ,lpszProxyName
                , "Str"        ,lpszProxyBypass
                , "Uint"    ,dwFlags )
}

WININET_InternetConnectA(hInternet,lpszServerName,nServerPort=80,lpszUsername=""
                    ,lpszPassword="",dwService=3,dwFlags=0,dwContext=0){
    ;http://msdn.microsoft.com/en-us/library/aa384363(VS.85).aspx
    ; INTERNET_SERVICE_FTP = 1
    ; INTERNET_SERVICE_HTTP = 3
    return DllCall("WinINet\InternetConnectA"
                , "uInt"    ,hInternet
                , "Str"        ,lpszServerName
                , "Int"        ,nServerPort
                , "Str"        ,lpszUsername
                , "Str"        ,lpszPassword
                , "uInt"    ,dwService
                , "uInt"    ,dwFlags
                , "uInt*"    ,dwContext )
}

WININET_HttpOpenRequestA(hConnect,lpszVerb,lpszObjectName,lpszVersion="HTTP/1.1"
                ,lpszReferer="",lplpszAcceptTypes="",dwFlags=0,dwContext=0){
    ;http://msdn.microsoft.com/en-us/library/aa384233(VS.85).aspx
    return DllCall("WinINet\HttpOpenRequestA"
                , "uInt"    ,hConnect
                , "Str"        ,lpszVerb
                , "Str"        ,lpszObjectName
                , "Str"        ,lpszVersion
                , "Str"        ,lpszReferer
                , "Str"        ,lplpszAcceptTypes
                , "uInt"    ,dwFlags
                , "uInt"    ,dwContext )
}

WININET_HttpSendRequestA(hRequest,lpszHeaders="",lpOptional=""){
    ;http://msdn.microsoft.com/en-us/library/aa384247(VS.85).aspx
    return DllCall("WinINet\HttpSendRequestA"
                , "uInt"    ,hRequest
                , "Str"        ,lpszHeaders
                , "uInt"    ,Strlen(lpszHeaders)
                , "Str"        ,lpOptional
                , "uInt"    ,Strlen(lpOptional) )
}

WININET_InternetReadFile(hFile){
    ;http://msdn.microsoft.com/en-us/library/aa385103(VS.85).aspx
    dwNumberOfBytesToRead := 1024**2
    VarSetCapacity(lpBuffer,dwNumberOfBytesToRead,0)
    VarSetCapacity(lpdwNumberOfBytesRead,4,0)
    Loop {
        if DllCall("wininet\InternetReadFile","uInt",hFile,"uInt",&lpBuffer
                ,"uInt",dwNumberOfBytesToRead,"uInt",&lpdwNumberOfBytesRead ) {
            VarSetCapacity(lpBuffer,-1)
            TotalBytesRead := 0
            Loop, 4
                TotalBytesRead += *(&lpdwNumberOfBytesRead + A_Index-1) << 8*(A_Index-1)
            If !TotalBytesRead
                break
            Else
                Result .= SubStr(lpBuffer,1,TotalBytesRead)
        }
    }
    return Result
}


WININET_FtpCreateDirectoryA(hConnect,lpszDirectory) {
   ;http://msdn.microsoft.com/en-us/library/aa384136(VS.85).aspx
   r := DllCall("wininet\FtpCreateDirectoryA", "uint", hConnect, "str", lpszDirectory)
   If (ErrorLevel or !r)
      Return 0
   else
      Return 1
   }


WININET_FtpRemoveDirectoryA(hConnect,lpszDirectory) {
   ;http://msdn.microsoft.com/en-us/library/aa384172(VS.85).aspx
   r := DllCall("wininet\FtpRemoveDirectoryA", "uint", hConnect, "str", lpszDirectory)
   If (ErrorLevel or !r)
      Return 0
   else
      Return 1
   }

WININET_FtpSetCurrentDirectoryA(hConnect,lpszDirectory) {
   ;http://msdn.microsoft.com/en-us/library/aa384178(VS.85).aspx
   r := DllCall("wininet\FtpSetCurrentDirectoryA", "uint", hConnect, "str", lpszDirectory)
   If (ErrorLevel or !r)
      Return 0
   else
      Return 1
   }

WININET_FtpPutFileA(hConnect,lpszLocalFile, lpszNewRemoteFile="", dwFlags=0,dwContext=0) {
    ;http://msdn.microsoft.com/en-us/library/aa384170(VS.85).aspx
    If lpszNewRemoteFile =
        lpszNewRemoteFile := lpszLocalFile
    r := DllCall("wininet\FtpPutFileA"
            , "uint"    , hConnect
            , "str"        , lpszLocalFile
            , "str"        , lpszNewRemoteFile
            , "uint"    , dwFlags
            , "uint"    , dwContext )
    If (ErrorLevel or !r)
        Return 0
    else
        Return 1
    }

WININET_FtpGetFileA(hConnect,lpszRemoteFile, lpszNewFile="", fFailIfExists=1
                ,dwFlagsAndAttributes=0,dwFlags=0,dwContext=0) {
    ;http://msdn.microsoft.com/en-us/library/aa384157(VS.85).aspx
    If lpszNewFile=
        lpszNewFile := lpszRemoteFile
    r := DllCall("wininet\FtpGetFileA"
            , "uint"    , hConnect
            , "str"        , lpszRemoteFile
            , "str"        , lpszNewFile
            , "int"        , fFailIfExists
            , "uint"    , dwFlagsAndAttributes
            , "uint"    , dwFlags
            , "uint"    , dwContext )
    If (ErrorLevel or !r)
    Return 0
    else
    Return 1
}

WININET_FtpOpenFileA(hConnect,lpszFileName,dwAccess=0x80000000,dwFlags=0,dwContext=0){
    ;http://msdn.microsoft.com/en-us/library/aa384166(VS.85).aspx
    Result := DllCall("wininet\FtpOpenFileA"
            , "uint"    , hConnect
            , "str"        , lpszFileName
            , "uint"    , dwAccess
            , "uint"    , dwFlags
            , "uint"    , dwContext    ) ;dwContext
    If (ErrorLevel or !r)
        Return -1
    Return Result
}

WININET_InternetCloseHandle(hInternet){
    DllCall("wininet\InternetCloseHandle"
            ,  "UInt"    , hInternet    )
}

WININET_FtpGetFileSize(hFile,lpdwFileSizeHigh=0) {
    ;http://msdn.microsoft.com/en-us/library/aa384159(VS.85).aspx
    return DllCall("wininet\FtpGetFileSize"
                    , "uint"    , hFile
                    , "uint"    , lpdwFileSizeHigh    )
}

WININET_FtpDeleteFileA(hConnect,lpszFileName) {
   ;http://msdn.microsoft.com/en-us/library/aa384142(VS.85).aspx
   r :=  DllCall("wininet\FtpDeleteFileA"
                   , "uint"    , hConnect
                , "str"        , lpszFileName)
   If (ErrorLevel or !r)
      Return 0
   else
      Return 1
   }

WININET_FtpRenameFileA(hConnect,lpszExisting, lpszNew) {
    ;http://msdn.microsoft.com/en-us/library/aa384175(VS.85).aspx
    r := DllCall("wininet\FtpRenameFileA"
                , "uint"    , hConnect
                , "str"        , lpszExisting
                , "str"        , lpszNew    )
    If (ErrorLevel or !r)
        Return 0
    else
        Return 1
}

WININET_FindFirstFile(hConnect, lpszSearchFile, ByRef lpFindFileData,dwFlags=0,dwContext=0) {
    ;http://msdn.microsoft.com/en-us/library/aa384146(VS.85).aspx
    SIZE_OF_WIN32_FIND_DATA := ( 4 + (3*8) + (4*4) + (260*4) + (14*4) )
    VarSetCapacity(lpFindFileData, SIZE_OF_WIN32_FIND_DATA, 0)
    hFind := DllCall("wininet\FtpFindFirstFileA"
            , "uint"    , hConnect
            , "str"    , lpszSearchFile
            , "uint"    , &lpFindFileData
            , "uint"    , dwFlags
            , "uint"    , dwContext )

    If(!hFind)
        VarSetCapacity(lpFindFileData, 0)
    Return hFind
}

WININET_FindNextFile(hFind, ByRef lpvFindData) {
;http://msdn.microsoft.com/en-us/library/aa384698(VS.85).aspx
   Return DllCall("wininet\InternetFindNextFileA"
      , "uint", hFind
      , "uint", &lpvFindData)
}

UrlGetContents(sUrl,sUserName="",sPassword="",sPostData="",sUserAgent="Autohotkey"){
    ; based on heresy & DerRaphael's script here:
    ; http://www.autohotkey.com/forum/viewtopic.php?t=33506
    
    ;default ports
    INTERNET_INVALID_PORT_NUMBER     = 0
    INTERNET_DEFAULT_HTTP_PORT         = 80
    INTERNET_DEFAULT_HTTPS_PORT     = 443
    
    ;ssl flags
    INTERNET_FLAG_SECURE                     = 0x00800000
    SECURITY_FLAG_IGNORE_UNKNOWN_CA         = 0x00000100
    SECURITY_FLAG_IGNORE_CERT_CN_INVALID     = 0x00001000
    SECURITY_FLAG_IGNORE_CERT_DATE_INVALID     = 0x00002000
    
    SplitPath,sURL,sFileName,sPath,sExt,sNoExt,sServer
    sProtocol := (RegExMatch(sServer,"(^http://|^ftp://|^https://)",pr)) ? pr1 : "unknown"
    if (sProtocol = "http://"){
        nPort := INTERNET_DEFAULT_HTTP_PORT
        dwFlags = 0
    } else if (sProtocol = "https://") {
        nPort := INTERNET_DEFAULT_HTTPS_PORT
        dwFlags := (INTERNET_FLAG_SECURE|SECURITY_FLAG_IGNORE_CERT_CN_INVALID
            |SECURITY_FLAG_IGNORE_CERT_DATE_INVALID|SECURITY_FLAG_IGNORE_UNKNOWN_CA)
    } else {
        nPort := INTERNET_INVALID_PORT_NUMBER
        dwFlags = 0
    }       
    sPath := RegExReplace(sPath,"\Q" sServer "\E")
    sServerName := (sProtocol!="unknown") ? RegExReplace(sServer,"\Q" sProtocol "\E") : sServer
    sObjectName := sPath . "/" . sFileName
    hInternet := WININET_InternetOpenA(sUserAgent)
    hConnect := WININET_InternetConnectA(hInternet,sServerName,nPort,sUserName,sPassword)
    if sPostData
        sHTTPVerb:="POST", sHeaders:="Content-Type: application/x-www-form-urlencoded"
    else
        sHTTPVerb:="GET", sHeaders:=""
    sVersion:="HTTP/1.1", sReferer:="", sAcceptTypes:=""
    hRequest := WININET_HttpOpenRequestA(hConnect,sHTTPVerb,sObjectName,sVersion,sReferer,sAcceptTypes,dwFlags)
    if WININET_HttpSendRequestA(hRequest,sHeaders,sPostData)
        sData := WININET_InternetReadFile(hRequest)
    WININET_InternetCloseHandle(hRequest)
    WININET_InternetCloseHandle(hInternet)
    WININET_InternetCloseHandle(hConnect)
    return sData
}

offline
AutoHotKey:
Active := false
Key := 3595986868 ; Сюда вписываем серийник жесткого диска "C" юзера кому делается привязка
DriveGet, DriveNumber, Serial, C:\
if( DriveNumber == Key)
    Active := true

if(Active == false)
{
    MsgBox, Ваше приложение не активированно.
    return
}
; далее твой код
принцип работы - получает серийник ЖД имя которого ( C ) и сравнивает с теми что есть на сайте или тем что введен в переменную " Key ", если нету совпадений выпадает msgbox мол иди отсюда, а если совпал то дальше идет твой код.
 
Последнее редактирование:

thelupa1488

Новичок
9
1
online
AutoHotKey:
#Include http.ahk
/*
URL - ваш сайт, на нем должны быть серийные номера жестких дисков которым предоставлен доступ.
1на строчка - 1ин серийник затем перенос строки! , иначе будет ошибка.
*/


Active := false
URL := "https://url.com"

DriveGet, DriveNumber, Serial, C:\
responseText := UrlGetContents(URL)

Loop, Parse, % responseText, `n
{
if( DriveNumber == A_LoopField)
Active := true
}
if(Active == false)
{
MsgBox, Ваше приложение не активированно.
return
}
; далее твой код

MsgBox, Работает :`)
AutoHotKey:
; ==========
; Origional FTP Functions by Olfen & Andreone
; See the following post:
; http://www.autohotkey.com/forum/viewtopic.php?t=10393
; ==========
; WININET_UrlGetContents() is based on heresy & DerRaphael's script here:
; http://www.autohotkey.com/forum/viewtopic.php?t=33506
; ==========
; by ahklerner
; ==========


WININET_Init(){
    global
    WININET_hModule := DllCall("LoadLibrary", "Str", "WinInet.Dll")
}

WININET_UnInit(){
    global
    DllCall("FreeLibrary", "UInt", WININET_hModule)
}

WININET_InternetOpenA(lpszAgent,dwAccessType=1,lpszProxyName=0,lpszProxyBypass=0,dwFlags=0){
    ;http://msdn.microsoft.com/en-us/library/aa385096(VS.85).aspx
    return DllCall("WinINet\InternetOpenA"
                , "Str"        ,lpszAgent
                , "UInt"    ,dwAccessType
                , "Str"        ,lpszProxyName
                , "Str"        ,lpszProxyBypass
                , "Uint"    ,dwFlags )
}

WININET_InternetConnectA(hInternet,lpszServerName,nServerPort=80,lpszUsername=""
                    ,lpszPassword="",dwService=3,dwFlags=0,dwContext=0){
    ;http://msdn.microsoft.com/en-us/library/aa384363(VS.85).aspx
    ; INTERNET_SERVICE_FTP = 1
    ; INTERNET_SERVICE_HTTP = 3
    return DllCall("WinINet\InternetConnectA"
                , "uInt"    ,hInternet
                , "Str"        ,lpszServerName
                , "Int"        ,nServerPort
                , "Str"        ,lpszUsername
                , "Str"        ,lpszPassword
                , "uInt"    ,dwService
                , "uInt"    ,dwFlags
                , "uInt*"    ,dwContext )
}

WININET_HttpOpenRequestA(hConnect,lpszVerb,lpszObjectName,lpszVersion="HTTP/1.1"
                ,lpszReferer="",lplpszAcceptTypes="",dwFlags=0,dwContext=0){
    ;http://msdn.microsoft.com/en-us/library/aa384233(VS.85).aspx
    return DllCall("WinINet\HttpOpenRequestA"
                , "uInt"    ,hConnect
                , "Str"        ,lpszVerb
                , "Str"        ,lpszObjectName
                , "Str"        ,lpszVersion
                , "Str"        ,lpszReferer
                , "Str"        ,lplpszAcceptTypes
                , "uInt"    ,dwFlags
                , "uInt"    ,dwContext )
}

WININET_HttpSendRequestA(hRequest,lpszHeaders="",lpOptional=""){
    ;http://msdn.microsoft.com/en-us/library/aa384247(VS.85).aspx
    return DllCall("WinINet\HttpSendRequestA"
                , "uInt"    ,hRequest
                , "Str"        ,lpszHeaders
                , "uInt"    ,Strlen(lpszHeaders)
                , "Str"        ,lpOptional
                , "uInt"    ,Strlen(lpOptional) )
}

WININET_InternetReadFile(hFile){
    ;http://msdn.microsoft.com/en-us/library/aa385103(VS.85).aspx
    dwNumberOfBytesToRead := 1024**2
    VarSetCapacity(lpBuffer,dwNumberOfBytesToRead,0)
    VarSetCapacity(lpdwNumberOfBytesRead,4,0)
    Loop {
        if DllCall("wininet\InternetReadFile","uInt",hFile,"uInt",&lpBuffer
                ,"uInt",dwNumberOfBytesToRead,"uInt",&lpdwNumberOfBytesRead ) {
            VarSetCapacity(lpBuffer,-1)
            TotalBytesRead := 0
            Loop, 4
                TotalBytesRead += *(&lpdwNumberOfBytesRead + A_Index-1) << 8*(A_Index-1)
            If !TotalBytesRead
                break
            Else
                Result .= SubStr(lpBuffer,1,TotalBytesRead)
        }
    }
    return Result
}


WININET_FtpCreateDirectoryA(hConnect,lpszDirectory) {
   ;http://msdn.microsoft.com/en-us/library/aa384136(VS.85).aspx
   r := DllCall("wininet\FtpCreateDirectoryA", "uint", hConnect, "str", lpszDirectory)
   If (ErrorLevel or !r)
      Return 0
   else
      Return 1
   }


WININET_FtpRemoveDirectoryA(hConnect,lpszDirectory) {
   ;http://msdn.microsoft.com/en-us/library/aa384172(VS.85).aspx
   r := DllCall("wininet\FtpRemoveDirectoryA", "uint", hConnect, "str", lpszDirectory)
   If (ErrorLevel or !r)
      Return 0
   else
      Return 1
   }

WININET_FtpSetCurrentDirectoryA(hConnect,lpszDirectory) {
   ;http://msdn.microsoft.com/en-us/library/aa384178(VS.85).aspx
   r := DllCall("wininet\FtpSetCurrentDirectoryA", "uint", hConnect, "str", lpszDirectory)
   If (ErrorLevel or !r)
      Return 0
   else
      Return 1
   }

WININET_FtpPutFileA(hConnect,lpszLocalFile, lpszNewRemoteFile="", dwFlags=0,dwContext=0) {
    ;http://msdn.microsoft.com/en-us/library/aa384170(VS.85).aspx
    If lpszNewRemoteFile =
        lpszNewRemoteFile := lpszLocalFile
    r := DllCall("wininet\FtpPutFileA"
            , "uint"    , hConnect
            , "str"        , lpszLocalFile
            , "str"        , lpszNewRemoteFile
            , "uint"    , dwFlags
            , "uint"    , dwContext )
    If (ErrorLevel or !r)
        Return 0
    else
        Return 1
    }

WININET_FtpGetFileA(hConnect,lpszRemoteFile, lpszNewFile="", fFailIfExists=1
                ,dwFlagsAndAttributes=0,dwFlags=0,dwContext=0) {
    ;http://msdn.microsoft.com/en-us/library/aa384157(VS.85).aspx
    If lpszNewFile=
        lpszNewFile := lpszRemoteFile
    r := DllCall("wininet\FtpGetFileA"
            , "uint"    , hConnect
            , "str"        , lpszRemoteFile
            , "str"        , lpszNewFile
            , "int"        , fFailIfExists
            , "uint"    , dwFlagsAndAttributes
            , "uint"    , dwFlags
            , "uint"    , dwContext )
    If (ErrorLevel or !r)
    Return 0
    else
    Return 1
}

WININET_FtpOpenFileA(hConnect,lpszFileName,dwAccess=0x80000000,dwFlags=0,dwContext=0){
    ;http://msdn.microsoft.com/en-us/library/aa384166(VS.85).aspx
    Result := DllCall("wininet\FtpOpenFileA"
            , "uint"    , hConnect
            , "str"        , lpszFileName
            , "uint"    , dwAccess
            , "uint"    , dwFlags
            , "uint"    , dwContext    ) ;dwContext
    If (ErrorLevel or !r)
        Return -1
    Return Result
}

WININET_InternetCloseHandle(hInternet){
    DllCall("wininet\InternetCloseHandle"
            ,  "UInt"    , hInternet    )
}

WININET_FtpGetFileSize(hFile,lpdwFileSizeHigh=0) {
    ;http://msdn.microsoft.com/en-us/library/aa384159(VS.85).aspx
    return DllCall("wininet\FtpGetFileSize"
                    , "uint"    , hFile
                    , "uint"    , lpdwFileSizeHigh    )
}

WININET_FtpDeleteFileA(hConnect,lpszFileName) {
   ;http://msdn.microsoft.com/en-us/library/aa384142(VS.85).aspx
   r :=  DllCall("wininet\FtpDeleteFileA"
                   , "uint"    , hConnect
                , "str"        , lpszFileName)
   If (ErrorLevel or !r)
      Return 0
   else
      Return 1
   }

WININET_FtpRenameFileA(hConnect,lpszExisting, lpszNew) {
    ;http://msdn.microsoft.com/en-us/library/aa384175(VS.85).aspx
    r := DllCall("wininet\FtpRenameFileA"
                , "uint"    , hConnect
                , "str"        , lpszExisting
                , "str"        , lpszNew    )
    If (ErrorLevel or !r)
        Return 0
    else
        Return 1
}

WININET_FindFirstFile(hConnect, lpszSearchFile, ByRef lpFindFileData,dwFlags=0,dwContext=0) {
    ;http://msdn.microsoft.com/en-us/library/aa384146(VS.85).aspx
    SIZE_OF_WIN32_FIND_DATA := ( 4 + (3*8) + (4*4) + (260*4) + (14*4) )
    VarSetCapacity(lpFindFileData, SIZE_OF_WIN32_FIND_DATA, 0)
    hFind := DllCall("wininet\FtpFindFirstFileA"
            , "uint"    , hConnect
            , "str"    , lpszSearchFile
            , "uint"    , &lpFindFileData
            , "uint"    , dwFlags
            , "uint"    , dwContext )

    If(!hFind)
        VarSetCapacity(lpFindFileData, 0)
    Return hFind
}

WININET_FindNextFile(hFind, ByRef lpvFindData) {
;http://msdn.microsoft.com/en-us/library/aa384698(VS.85).aspx
   Return DllCall("wininet\InternetFindNextFileA"
      , "uint", hFind
      , "uint", &lpvFindData)
}

UrlGetContents(sUrl,sUserName="",sPassword="",sPostData="",sUserAgent="Autohotkey"){
    ; based on heresy & DerRaphael's script here:
    ; http://www.autohotkey.com/forum/viewtopic.php?t=33506
 
    ;default ports
    INTERNET_INVALID_PORT_NUMBER     = 0
    INTERNET_DEFAULT_HTTP_PORT         = 80
    INTERNET_DEFAULT_HTTPS_PORT     = 443
 
    ;ssl flags
    INTERNET_FLAG_SECURE                     = 0x00800000
    SECURITY_FLAG_IGNORE_UNKNOWN_CA         = 0x00000100
    SECURITY_FLAG_IGNORE_CERT_CN_INVALID     = 0x00001000
    SECURITY_FLAG_IGNORE_CERT_DATE_INVALID     = 0x00002000
 
    SplitPath,sURL,sFileName,sPath,sExt,sNoExt,sServer
    sProtocol := (RegExMatch(sServer,"(^http://|^ftp://|^https://)",pr)) ? pr1 : "unknown"
    if (sProtocol = "http://"){
        nPort := INTERNET_DEFAULT_HTTP_PORT
        dwFlags = 0
    } else if (sProtocol = "https://") {
        nPort := INTERNET_DEFAULT_HTTPS_PORT
        dwFlags := (INTERNET_FLAG_SECURE|SECURITY_FLAG_IGNORE_CERT_CN_INVALID
            |SECURITY_FLAG_IGNORE_CERT_DATE_INVALID|SECURITY_FLAG_IGNORE_UNKNOWN_CA)
    } else {
        nPort := INTERNET_INVALID_PORT_NUMBER
        dwFlags = 0
    }    
    sPath := RegExReplace(sPath,"\Q" sServer "\E")
    sServerName := (sProtocol!="unknown") ? RegExReplace(sServer,"\Q" sProtocol "\E") : sServer
    sObjectName := sPath . "/" . sFileName
    hInternet := WININET_InternetOpenA(sUserAgent)
    hConnect := WININET_InternetConnectA(hInternet,sServerName,nPort,sUserName,sPassword)
    if sPostData
        sHTTPVerb:="POST", sHeaders:="Content-Type: application/x-www-form-urlencoded"
    else
        sHTTPVerb:="GET", sHeaders:=""
    sVersion:="HTTP/1.1", sReferer:="", sAcceptTypes:=""
    hRequest := WININET_HttpOpenRequestA(hConnect,sHTTPVerb,sObjectName,sVersion,sReferer,sAcceptTypes,dwFlags)
    if WININET_HttpSendRequestA(hRequest,sHeaders,sPostData)
        sData := WININET_InternetReadFile(hRequest)
    WININET_InternetCloseHandle(hRequest)
    WININET_InternetCloseHandle(hInternet)
    WININET_InternetCloseHandle(hConnect)
    return sData
}

offline
AutoHotKey:
Active := false
Key := 3595986868 ; Сюда вписываем серийник жесткого диска "C" юзера кому делается привязка
DriveGet, DriveNumber, Serial, C:\
if( DriveNumber == Key)
    Active := true

if(Active == false)
{
    MsgBox, Ваше приложение не активированно.
    return
}
; далее твой код
принцип работы - получает серийник ЖД имя которого ( C ) и сравнивает с теми что есть на сайте или тем что введен в переменную " Key ", если нету совпадений выпадает msgbox мол иди отсюда, а если совпал то дальше идет твой код.
Я тут увидел http.ahk, он работает только на ansi 32 bit, вот проще код (может кому пригодится)
UrlGetContents(sUrl) {
http := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
http.Open("GET", sUrl, False)
http.Send()
http.WaitForResponse()
result := http.responseText
return result
}
 

norm chel

Новичок
9
1
необязательно сайт, просто свой хостинг
У меня одна проблема, я создаю там файл для того чтобы туда записывать ключи, но как скопировать именно ссылку на файл? там нету ссылки на сам файл.
 
Последнее редактирование: