Error 12005 Trying to Call WINHTTPCONNECT Function in WINHTTP DLL from VB

I am trying to call Winhttp.dll from a VB app. I specifically need to carry out this process using windows native DLL's, not COM objects.
When I run the attached code, I get the error 12005, could someone explain why, and offer a solution.
Please note my final solution will be adapted to run in an uncommon language (Omnis 7), so please keep this in mind for your replies.
Public Declare Function WinHttpOpen Lib "WinHttp.dll" (ByVal pwszUserAgent As String, ByVal dwAccessType As Int32, ByVal pwszProxyName As String, ByVal pwszProxyBypass As String, ByVal dwFlags As Int32) As Int32
    Public Declare Function WinHttpConnect Lib "WinHttp.dll" (ByVal Hsession As Int32, ByVal SiteAddress As String, ByVal Port_Number As Int32, ByVal dwvalue As Int32) As Int32
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim hsession As Int32
        Dim hconnect As Int32
        Dim Herror As Int32
        'Dim Exception As String
        Dim URL As String
        URL = ""
        hsession = WinHttpOpen("Visual Basic", 0, "", "", 0)
        hconnect = WinHttpConnect(hsession, URL, 80, 0)
        Herror = Err.LastDllError
        If Herror = 12005 Then
            MsgBox("Bad Url")
        End If
    End Sub

Open in new window

Who is Participating?
lonefox_illuminusConnect With a Mentor Author Commented:
I managed to acheive what I was looking for by using Wininet.dll instead, never had any success with winhttp.dll in the end, despite asking on numerous boards, and scouring the web for answers.
MSDN is quite clear in it's definition for the URL to be in the format of my original question, and having tried all combinations including with and without protocol prefix, suffixing / characters etc, all with no success, the most likely reason I can deduce is something to do with the string handling between VB and C++.
This question is closed, my suggestion for anyone else with the same problem.
Use Wininet.dll instead.
lonefox_illuminusAuthor Commented:
points changed
Try using

URL = ""

Some of the low level APIs can be picky about the URL format.  Google doesn't like being screen scraped either, so you might change to a different site for testing.
Cloud Class® Course: CompTIA Healthcare IT Tech

This course will help prep you to earn the CompTIA Healthcare IT Technician certification showing that you have the knowledge and skills needed to succeed in installing, managing, and troubleshooting IT systems in medical and clinical settings.

Suggest that since there is no solution to the OP problem that the question be deleted instead.
lonefox_illuminusAuthor Commented:
Solution is to not use winhttp.dll when calling from VB, and to use wininet.dll instead. IMO this is worthy information that might have saved me weeks of head scratching, had I found a reference to it online.
As this is VB.NET I'm unclear why you would not want to use the .NET framework tools (not COM objects) instead of an API.
(Note that I only just realized that the question targetted .NET framework...)
lonefox_illuminusAuthor Commented:
As per my question,

"I specifically need to carry out this process using windows native DLL's, not COM objects."

"Please note my final solution will be adapted to run in an uncommon language (Omnis 7),"

I think u realised that now though.

Omnis 7 doesn't support COM objects, after testing in VB to conclude the same error occured, I opted to ask my question targetting VB to increase the likelyhood of a response. There's only a handful of us out here coding in Omnis.
Anyway, no objection to PAQ... I'll get a moderator to close the question with your solution.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.