|
I have a type libray xxx.tlb which is used without any problem in vb6, now when trying to use it in .net i import it by using the tlbimp utility, aparently it works fine except that the functions are not seen anywhere, just the enums. Ive never worked on this before so im a total ignorant of the matter. I would appreciate any help , i could also give more info if required, thanks
|
|
|
|
|
Which library? Can we reproduce it on our machines?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
sir how to serial key match pc serial no.?
how to my excel softwar license key version created?
please helpme.
|
|
|
|
|
We cannot tell you, even if we knew and wanted to: that is proprietary to Microsoft and is part of a legitimate security system. We do not help people to bypass legitimate security and the information could help with that. There is no legitimate reason that you need to know the information!
And please, if your message does not appear immediately do not repost it: both of these went to moderation because the automated system wasn't sure they should be allowed through. I've deleted the spare, but reposting increases the likelihood that more of your messages will be captured, not lessens it.
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Boy this place is a ghost town! I guess everyone already knows everything about COM, and so doesn't need to ask any questions.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
Or the silly buggers still working with COM haven't worked out there is a forum for that and continue to ask in VB/C# forums.
Never underestimate the power of human stupidity -
RAH
I'm old. I know stuff - JSOP
|
|
|
|
|
Now, we have a hsajet printer system for control and printing barcode. So i want to write a new application to control it.
I try find document to program but it not foud.
I want everyone help me.
And this is my document of hsajet that i find it on website. I dont know it is correct or not correct.
hsausa.com/Downloads/Manuals/HSAJET_CU_REMOTE_PROTOCOL_2011_03_01.pdf
Please help me.
|
|
|
|
|
Sorry, but this site does not provide code to order.
|
|
|
|
|
Hey Everyone, I have been searching the web for days to try and find a potential solution to my problem, and so far I have only gathered bits and pieces of a potential solution. I need to be able to make API calls to a CAD program from an Excel macro. The CAD program is called NX. It was developed by Siemens. They have an API called NXOpen that was written in VB.NET. I have tried referencing the appropriate DLL in Excel, however the DLL is not registered and nor can it be in my limited development environment. I do not have registry access. If I am able to pull this off I would like to distribute the workbook to my co-workers as well.
So I have been exploring the possibility of using Registration Free COM in Excel 2010 (Windows 7 64 bit) to make the API calls I need from Excel. To try and do this I was going to use the following code to instantiate an object that points to the manifest for the NXOpen.dll file. I want to access a subroutine in the DLL called "Highlight". Also, from what I have read I will also need the dlls CLSID to reference in the manifest as well. That I don't know how to get. Any help would be very appreciated. Thank you.
Sub EXCELNX()
Dim actCtx As Object
Set actCtx = CreateObject("Microsoft.Windows.ActCtx")
actCtx.Manifest = ThisWorkbook.Path & "\NXOpen.dll.manifest"
Dim myNX As Object
Set myNX = actCtx.CreateObject("Highlight")
End Sub
|
|
|
|
|
If the API was written in .NET, it might not be exposed as a COM library. There are specific steps you have to take to make that happen:
Exposing .NET Components to COM[^]
If there isn't a COM API available, you have a couple of choices. You could write your own wrapper API in .NET, and expose that wrapper as a COM-callable library. Or, you could use VSTO to write a .NET Execl add-in[^], and call the API from that.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Okay, so if I create my own Library exposing the .NET calls to be consumed in VBA I can reference this Library in Excel? I have Visual Studio so I can build DLL files and anything that does not require installation (or registry access) to run. If I can consolidate the functionality to an Excel workbook that would be great. Which is why I was thinking of Reg Free COM. How can I call the Library in Excel VBA?
Edit: I can't build executables either. IT is picky about what we can and cannot do. However Excel is free game.
|
|
|
|
|
Yes, if you follow the instructions in the article I linked to, you can create your own .NET library to call the API, and then call that as a COM component from Excel.
Or you could use VSTO to create an Excel add-in or workbook with .NET code running behind it. But it sounds like you might be locked out from doing that as well.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Hello, in the article you linked in your post, there are two different GUIDs. What are the differences in the 2, and which ones should I be using?
Also, in the article to call the COM object he was able to reference the COM wrapper class built to expose the .NET calls to VBA in Visual Studio. I am trying to do this in Excel, where I can't simply reference the dll. Can somebody tell me how I can call COM objects in Excel? Here is my code for the COM Wrapper Class:
Imports System
Imports System.Collections.Generic
Imports System.Runtime.InteropServices
Imports NXOpen
Imports NXOpen.UF
Imports NXOpen.Assemblies
Namespace ExcelNXInterface
<Guid("bbe0089d-a732-4743-922b-180b30006fa4"), _
InterfaceType(ComInterfaceType.InterfaceIsIDispatch)> _
Public Interface _ExcelNXInterface
<DispId(1)> Sub HighlightCompTag(ByRef tag As Long)
<DispId(2)> Sub Echo(ByVal output As String)
End Interface
<ComVisible(True)>
<Guid("975DC7E0-4596-4C42-9D0C-0601F86E3A1B"), _
ClassInterface(ClassInterfaceType.None), _
ProgId("ExcelNXInterface.Open")> Public Class ExcelNXInterface
Implements _ExcelNXInterface
Public _ExcelNXInterface
Dim theSession As Session = Session.GetSession()
Dim ufs As UFSession = UFSession.GetUFSession()
Public Sub HighlightCompTag(ByRef tag As Long) Implements _ExcelNXInterface.HighlightCompTag
Try
ufs.Disp.SetHighlight(tag, 1)
Echo("Component(s) Highlighted...")
Catch e As NXException
Echo("NX Exception is: {0} " + e.Message)
Catch e As Exception
Echo("Exception is: {0} " & e.Message)
Echo("DONE!" & vbLf)
End Try
End Sub
Sub Echo(ByVal output As String) Implements _ExcelNXInterface.Echo
theSession.ListingWindow.Open()
theSession.ListingWindow.WriteLine(output)
theSession.LogFile.WriteLine(output)
End Sub
End Class
End Namespace
Here is the manifest I built to reference in Excel:
="1.0"="utf-8"
<asmv1:assembly
manifestVersion="1.0"
xmlns="urn:schemas-microsoft-com:asm.v1"
xmlns:asmv1="urn:schemas-microsoft-com:asm.v1"
xmlns:asmv2="urn:schemas-microsoft-com:asm.v2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity
type="win32"
version="1.0.0.0"
name="ExcelNXInterface"/>
<clrClass
clsid="{975DC7E0-4596-4C42-9D0C-0601F86E3A1B}"
progid="ExcelNXInterface.Open"
threadingModel="Both"
name="ExcelNXInterface.Open">
</clrClass>
<file name = "ExcelNXInterface.dll"></file>
</asmv1:assembly>
Here is the VBA code I am using to try and call the COM objects in Excel's IDE:
Sub ExcelNX()
Dim actCtx As Object
Set actCtx = CreateObject("Microsoft.Windows.ActCtx")
actCtx.Manifest = ThisWorkbook.Path & "\ExcelNXInterface.dll.manifest"
Dim myNX As Object
Set myNX = actCtx.CreateObject("ExcelNXInterface.Open")
End Sub
So far I am getting an error stating "Method 'CreateObject' of object IActCtx' failed" when it attemps to run this line of code:
<br />
Set myNX = actCtx.CreateObject("ExcelNXInterface.Open")<br />
The DLL I built to expose .NET calls to VBA, the Excel Workbook making the VBA calls and the Manifest are all in the same directory.
Any help or guidance is appreciated. Thank you.
modified 19-Oct-16 12:05pm.
|
|
|
|
|
Obviously, you need to create your own Guids.
I believe you'd use the Guid from the IDispatch interface, but it's a long time since I've had to touch COM at that level.
Member 12336929 wrote:
progid="ExcelNXInterface.Open"
Set myNX = actCtx.CreateObject("ExcelNXInterface.Open")
That doesn't seem to match the name of the class you created. Did you mean to use ExcelNXInterface.ExcelNXInterface instead?
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Okay, based on some other examples I found online I saw that some people used the progid in the manifest. I wasn't sure why, but I just followed the examples. So I went ahead and tried using your suggestion. This time around I got another error, but it seems much friendlier (maybe).
It says "ActiveX component can't create Object". So maybe using ExcelNXInterface.ExcelNXInterface was the way to go, even though it still isn't working. It seems better than the error saying the Create Object Method Failed.
Anyway, I am pretty much lost from here out. Not sure what else can be done. I have seen in other forums online that some people claim in order to pull this off you need to alter the Excel.exe.manifest file to point to your dll, and store the dll in the same folder as Excel's executable file. I'm hoping that isn't true.
|
|
|
|
|
I suspect you'd need to update the progId in the manifest to ExcelNXInterface.ExcelNXInterface as well.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Okay so I changed the manifest to reflect the new progid: ExcelInterface.ExcelInterface .
I assumed that also meant that I should change the progid in the DLL to match the manifest. I changed the following line:
ProgId("ExcelNXInterface.ExcelNXInterface")> Public Class ExcelNXInterface .
As a result I am getting the following error: Method 'CreateObject' of object IActCtx failed.
Thank you for your help by the way.
|
|
|
|
|
Member 12336929 wrote: ExcelInterface.ExcelInterface
Member 12336929 wrote: ProgId("ExcelNXInterface.ExcelNXInterface")
Which is it? These should both match.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
I am trying to do some stuff with the CommonItemDialog, which means COM. I have compiled shobjidl.idl with midl, and created an interop with tlbimp. However, when I reference that interop in VS2015, some of the definitions are just not there - in particular, I cannot see the IFileDialog2 interface. I looked at the idl, and the generated .c and .h files, and I cannot see anything that might exclude this interface.
Does anyone have any ideas what is going on here? Its been years since I touched the C++/COM stuff, so its more than likely there's something I have forgotten.
PS: I was going to post this in Quick Answers, but I thought I'd put it here instead just to give Rob Philpott[^] a reason to start screaming again (ref Discussions/General Programming/COM[^])
Cheers,
Mick
------------------------------------------------
It doesn't matter how often or hard you fall on your arse, eventually you'll roll over and land on your feet.
|
|
|
|
|
Hi,
I want to debug COM dll solution through another ASP.Net solution (IIS).
Solution A - COM dll which outputs 4 com dll's.
Solution B - ASP.Net which access, solution A COM dll's. This solution was hosted in IIS
Solution B I able to debug through Visualstudio->Debug->attachtoprocess->w3wp.exe
But when solution B calls COM dll which is from solution A , I cannot debug Solution A(COM Dll).
Please suggest solution for debugging.
(Usually I debug the dll solution through
VS->Project->properties->Debugging->command->setting target exe path. But here it is asp.net solution, so I don't know what to give in Target exe path)
|
|
|
|
|
You'll probably need a debugger that is suitable for the language the COM object was built on. Remember COM is just an interface, it is a way of making code language-agnostic, so if the COM dll is VB6 use VB6 IDE, if it's a C++ object then again use a C++ debugger.
|
|
|
|
|
I want to replace the Window's stock (gregorian) calendar with an English version of the Hebrew(Israel) calendar. I know that I will have to code this (or at least hack the resources in a dll), but I don't know where to begin.
On the "Date" tab, of "Customize Format" window, there is a "Calendar type" option available for some "Region Formats"... ie. Hebrew(Israel)...
I would like to implement an English variant of the "Hebrew(Israel)" sacred calendar. Because there is currently no way to have that calendar format in the english language (from the system tray calendar, for example).
I know that this will require coding, and most likely with COM. If there is a working solution that just involves resource hacking, that is fine instead.
I don't know where to begin this adventure so I thought that I'd ask here. This is where I've started:
Retrieving Time and Date Information (Windows)[^] , but I can find nothing about the system's calendar themselves (the objects). I will not use .NET for anything; If I am going to do this, I am going to do it right (with real native code).
If anyone has any tips... even some debugging strategy that might shed some light into this tunnel -- it would be much appreciated. Thank you.
|
|
|
|
|
|
That actually helps a little (got a couple more results than my search @ DuckDuckGo.com).
It looks like I can recreate the whole calendar experience to whatever degree that I'd like to. So the problem becomes integrating the "new" calendar into the Windows taskbar tray (replacing or complimenting the existing system calendar).
|
|
|
|
|
I am not sure if that is possible. Have you tried adjusting your regional settings?
|
|
|
|