473,789 Members | 2,781 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

PInvoke an old DLL file

I am trying to port a legacy CTI application written in another
programming language to C# 2005. From my initial research into it I
see I can utilize the DllImport method to tap into the DLL file (which
is CTSA32.DLL). From there I have documented API for the various C
methods that are invoked, most all of which have an in and an out. You
pass in a data structure and get a data structure returned back.
What's the most straightforward way of mimicing the packed pointers
that are in these C data structures? The other data types I think I
have a handle on. Most of them are unsigned short or else enums. But
the packed pointers seems to be another matter? Here's a sample data
structure that opens the initial CTI session stream:

#include <acs.h>
#include <csta.h>

RetCode_t acsOpenStream(
ACSHandle_t *acsHandle, /* RETURN */
InvokeIDType_t invokeIDType, /* INPUT */
InvokeID_t invokeID, /* INPUT */
StreamType_t streamType, /* INPUT */
ServerID_t *serverID, /* INPUT */
LoginID_t *loginID, /* INPUT */
Passwd_t *passwd, /* INPUT */
AppName_t *applicationNam e, /* INPUT */
Level_t acsLevelReq /* INPUT */
Version_t *apiVer, /* INPUT */
unsigned short sendQSize, /* INPUT */
unsigned short sendExtraBufs, /* INPUT */
unsigned short recvQSize, /* INPUT */
unsigned short recvExtraBufs /* INPUT */
PrivateData_t *privateData); /* INPUT */

How do I create a C# struct that contains members that are packed
pointers?

May 17 '07 #1
6 1737
You are going to have to create a structure which has IntPtr members
which act as the pointers.

Once you do that, you will also have to define the structures/types that
the pointers point to.

If you have to allocate the memory for these structures before you pass
the structure to the function through P/Invoke, you will have to use one of
the static Alloc* methods on the Marshal class in order to allocate memory
(or use unsafe code, which would make it a lot easier) and then set the
values of those fields to the blocks of memory that you allocated.

On return, you have to pass those pointers to the PtrToStructure method
to read the unmanaged memory and return a managed representation to you.
Again, unsafe code would probably be very helpful here, as you could just
access the pointers in memory directly.
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard. caspershouse.co m

"gregarican " <gr*********@gm ail.comwrote in message
news:11******** **************@ q23g2000hsg.goo glegroups.com.. .
>I am trying to port a legacy CTI application written in another
programming language to C# 2005. From my initial research into it I
see I can utilize the DllImport method to tap into the DLL file (which
is CTSA32.DLL). From there I have documented API for the various C
methods that are invoked, most all of which have an in and an out. You
pass in a data structure and get a data structure returned back.
What's the most straightforward way of mimicing the packed pointers
that are in these C data structures? The other data types I think I
have a handle on. Most of them are unsigned short or else enums. But
the packed pointers seems to be another matter? Here's a sample data
structure that opens the initial CTI session stream:

#include <acs.h>
#include <csta.h>

RetCode_t acsOpenStream(
ACSHandle_t *acsHandle, /* RETURN */
InvokeIDType_t invokeIDType, /* INPUT */
InvokeID_t invokeID, /* INPUT */
StreamType_t streamType, /* INPUT */
ServerID_t *serverID, /* INPUT */
LoginID_t *loginID, /* INPUT */
Passwd_t *passwd, /* INPUT */
AppName_t *applicationNam e, /* INPUT */
Level_t acsLevelReq /* INPUT */
Version_t *apiVer, /* INPUT */
unsigned short sendQSize, /* INPUT */
unsigned short sendExtraBufs, /* INPUT */
unsigned short recvQSize, /* INPUT */
unsigned short recvExtraBufs /* INPUT */
PrivateData_t *privateData); /* INPUT */

How do I create a C# struct that contains members that are packed
pointers?

May 17 '07 #2
On May 17, 2:10 pm, "Nicholas Paldino [.NET/C# MVP]"
<m...@spam.guar d.caspershouse. comwrote:
You are going to have to create a structure which has IntPtr members
which act as the pointers.

Once you do that, you will also have to define the structures/types that
the pointers point to.

If you have to allocate the memory for these structures before you pass
the structure to the function through P/Invoke, you will have to use one of
the static Alloc* methods on the Marshal class in order to allocate memory
(or use unsafe code, which would make it a lot easier) and then set the
values of those fields to the blocks of memory that you allocated.

On return, you have to pass those pointers to the PtrToStructure method
to read the unmanaged memory and return a managed representation to you.
Again, unsafe code would probably be very helpful here, as you could just
access the pointers in memory directly.

--
- Nicholas Paldino [.NET/C# MVP]
- m...@spam.guard .caspershouse.c om

"gregarican " <greg.kuj...@gm ail.comwrote in message

news:11******** **************@ q23g2000hsg.goo glegroups.com.. .
I am trying to port a legacy CTI application written in another
programming language to C# 2005. From my initial research into it I
see I can utilize the DllImport method to tap into the DLL file (which
is CTSA32.DLL). From there I have documented API for the various C
methods that are invoked, most all of which have an in and an out. You
pass in a data structure and get a data structure returned back.
What's the most straightforward way of mimicing the packed pointers
that are in these C data structures? The other data types I think I
have a handle on. Most of them are unsigned short or else enums. But
the packed pointers seems to be another matter? Here's a sample data
structure that opens the initial CTI session stream:
#include <acs.h>
#include <csta.h>
RetCode_t acsOpenStream(
ACSHandle_t *acsHandle, /* RETURN */
InvokeIDType_t invokeIDType, /* INPUT */
InvokeID_t invokeID, /* INPUT */
StreamType_t streamType, /* INPUT */
ServerID_t *serverID, /* INPUT */
LoginID_t *loginID, /* INPUT */
Passwd_t *passwd, /* INPUT */
AppName_t *applicationNam e, /* INPUT */
Level_t acsLevelReq /* INPUT */
Version_t *apiVer, /* INPUT */
unsigned short sendQSize, /* INPUT */
unsigned short sendExtraBufs, /* INPUT */
unsigned short recvQSize, /* INPUT */
unsigned short recvExtraBufs /* INPUT */
PrivateData_t *privateData); /* INPUT */
How do I create a C# struct that contains members that are packed
pointers?- Hide quoted text -

- Show quoted text -
Ouch. Sounds like some serious groundwork to get things started. But I
have to do it in any event. Could you please post a brief sample of
unsafe code that could achieve what I'm looking to do with this basic
structure that I listed? That should be enough to get my head around
this and get started. I'd really appreciate it :-)

May 17 '07 #3
You would need to post the typedefs or structure definitions for the
members in the structure which are not standard types (what is Rescode_t for
example).
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard. caspershouse.co m

"gregarican " <gr*********@gm ail.comwrote in message
news:11******** **************@ p77g2000hsh.goo glegroups.com.. .
On May 17, 2:10 pm, "Nicholas Paldino [.NET/C# MVP]"
<m...@spam.guar d.caspershouse. comwrote:
> You are going to have to create a structure which has IntPtr members
which act as the pointers.

Once you do that, you will also have to define the structures/types
that
the pointers point to.

If you have to allocate the memory for these structures before you
pass
the structure to the function through P/Invoke, you will have to use one
of
the static Alloc* methods on the Marshal class in order to allocate
memory
(or use unsafe code, which would make it a lot easier) and then set the
values of those fields to the blocks of memory that you allocated.

On return, you have to pass those pointers to the PtrToStructure
method
to read the unmanaged memory and return a managed representation to you.
Again, unsafe code would probably be very helpful here, as you could just
access the pointers in memory directly.

--
- Nicholas Paldino [.NET/C# MVP]
- m...@spam.guard .caspershouse.c om

"gregarican " <greg.kuj...@gm ail.comwrote in message

news:11******* *************** @q23g2000hsg.go oglegroups.com. ..
>I am trying to port a legacy CTI application written in another
programming language to C# 2005. From my initial research into it I
see I can utilize the DllImport method to tap into the DLL file (which
is CTSA32.DLL). From there I have documented API for the various C
methods that are invoked, most all of which have an in and an out. You
pass in a data structure and get a data structure returned back.
What's the most straightforward way of mimicing the packed pointers
that are in these C data structures? The other data types I think I
have a handle on. Most of them are unsigned short or else enums. But
the packed pointers seems to be another matter? Here's a sample data
structure that opens the initial CTI session stream:
#include <acs.h>
#include <csta.h>
RetCode_t acsOpenStream(
ACSHandle_t *acsHandle, /* RETURN */
InvokeIDType_t invokeIDType, /* INPUT */
InvokeID_t invokeID, /* INPUT */
StreamType_t streamType, /* INPUT */
ServerID_t *serverID, /* INPUT */
LoginID_t *loginID, /* INPUT */
Passwd_t *passwd, /* INPUT */
AppName_t *applicationNam e, /* INPUT */
Level_t acsLevelReq /* INPUT */
Version_t *apiVer, /* INPUT */
unsigned short sendQSize, /* INPUT */
unsigned short sendExtraBufs, /* INPUT */
unsigned short recvQSize, /* INPUT */
unsigned short recvExtraBufs /* INPUT */
PrivateData_t *privateData); /* INPUT */
How do I create a C# struct that contains members that are packed
pointers?- Hide quoted text -

- Show quoted text -

Ouch. Sounds like some serious groundwork to get things started. But I
have to do it in any event. Could you please post a brief sample of
unsafe code that could achieve what I'm looking to do with this basic
structure that I listed? That should be enough to get my head around
this and get started. I'd really appreciate it :-)

May 17 '07 #4
On May 17, 2:53 pm, "Nicholas Paldino [.NET/C# MVP]"
<m...@spam.guar d.caspershouse. comwrote:
You would need to post the typedefs or structure definitions for the
members in the structure which are not standard types (what is Rescode_t for
example).

--
- Nicholas Paldino [.NET/C# MVP]
- m...@spam.guard .caspershouse.c om

"gregarican " <greg.kuj...@gm ail.comwrote in message

news:11******** **************@ p77g2000hsh.goo glegroups.com.. .
On May 17, 2:10 pm, "Nicholas Paldino [.NET/C# MVP]"
<m...@spam.guar d.caspershouse. comwrote:
You are going to have to create a structure which has IntPtr members
which act as the pointers.
Once you do that, you will also have to define the structures/types
that
the pointers point to.
If you have to allocate the memory for these structures before you
pass
the structure to the function through P/Invoke, you will have to use one
of
the static Alloc* methods on the Marshal class in order to allocate
memory
(or use unsafe code, which would make it a lot easier) and then set the
values of those fields to the blocks of memory that you allocated.
On return, you have to pass those pointers to the PtrToStructure
method
to read the unmanaged memory and return a managed representation to you.
Again, unsafe code would probably be very helpful here, as you could just
access the pointers in memory directly.
--
- Nicholas Paldino [.NET/C# MVP]
- m...@spam.guard .caspershouse.c om
"gregarican " <greg.kuj...@gm ail.comwrote in message
>news:11******* *************** @q23g2000hsg.go oglegroups.com. ..
I am trying to port a legacy CTI application written in another
programming language to C# 2005. From my initial research into it I
see I can utilize the DllImport method to tap into the DLL file (which
is CTSA32.DLL). From there I have documented API for the various C
methods that are invoked, most all of which have an in and an out. You
pass in a data structure and get a data structure returned back.
What's the most straightforward way of mimicing the packed pointers
that are in these C data structures? The other data types I think I
have a handle on. Most of them are unsigned short or else enums. But
the packed pointers seems to be another matter? Here's a sample data
structure that opens the initial CTI session stream:
#include <acs.h>
#include <csta.h>
RetCode_t acsOpenStream(
ACSHandle_t *acsHandle, /* RETURN */
InvokeIDType_t invokeIDType, /* INPUT */
InvokeID_t invokeID, /* INPUT */
StreamType_t streamType, /* INPUT */
ServerID_t *serverID, /* INPUT */
LoginID_t *loginID, /* INPUT */
Passwd_t *passwd, /* INPUT */
AppName_t *applicationNam e, /* INPUT */
Level_t acsLevelReq /* INPUT */
Version_t *apiVer, /* INPUT */
unsigned short sendQSize, /* INPUT */
unsigned short sendExtraBufs, /* INPUT */
unsigned short recvQSize, /* INPUT */
unsigned short recvExtraBufs /* INPUT */
PrivateData_t *privateData); /* INPUT */
How do I create a C# struct that contains members that are packed
pointers?- Hide quoted text -
- Show quoted text -
Ouch. Sounds like some serious groundwork to get things started. But I
have to do it in any event. Could you please post a brief sample of
unsafe code that could achieve what I'm looking to do with this basic
structure that I listed? That should be enough to get my head around
this and get started. I'd really appreciate it :-)- Hide quoted text -

- Show quoted text -
Gotcha. It is like peeling an onion since the struct members are
themselves other custom datatypes. Typically enums or shorts. I think
I have a basic understanding enough to at least Google my way to
getting a crack at this. Thanks for the high level overview that at
least has me pointed in the right direction!

May 17 '07 #5

"gregarican " <gr*********@gm ail.comwrote in message
news:11******** **************@ p77g2000hsh.goo glegroups.com.. .
On May 17, 2:10 pm, "Nicholas Paldino [.NET/C# MVP]"
<m...@spam.guar d.caspershouse. comwrote:
> You are going to have to create a structure which has IntPtr members
which act as the pointers.

Once you do that, you will also have to define the structures/types
that
the pointers point to.

If you have to allocate the memory for these structures before you
pass
the structure to the function through P/Invoke, you will have to use one
of
the static Alloc* methods on the Marshal class in order to allocate
memory
(or use unsafe code, which would make it a lot easier) and then set the
values of those fields to the blocks of memory that you allocated.

On return, you have to pass those pointers to the PtrToStructure
method
to read the unmanaged memory and return a managed representation to you.
Again, unsafe code would probably be very helpful here, as you could just
access the pointers in memory directly.

--
- Nicholas Paldino [.NET/C# MVP]
- m...@spam.guard .caspershouse.c om

"gregarican " <greg.kuj...@gm ail.comwrote in message

news:11******* *************** @q23g2000hsg.go oglegroups.com. ..
>I am trying to port a legacy CTI application written in another
programming language to C# 2005. From my initial research into it I
see I can utilize the DllImport method to tap into the DLL file (which
is CTSA32.DLL). From there I have documented API for the various C
methods that are invoked, most all of which have an in and an out. You
pass in a data structure and get a data structure returned back.
What's the most straightforward way of mimicing the packed pointers
that are in these C data structures? The other data types I think I
have a handle on. Most of them are unsigned short or else enums. But
the packed pointers seems to be another matter? Here's a sample data
structure that opens the initial CTI session stream:
#include <acs.h>
#include <csta.h>
RetCode_t acsOpenStream(
ACSHandle_t *acsHandle, /* RETURN */
InvokeIDType_t invokeIDType, /* INPUT */
InvokeID_t invokeID, /* INPUT */
StreamType_t streamType, /* INPUT */
ServerID_t *serverID, /* INPUT */
LoginID_t *loginID, /* INPUT */
Passwd_t *passwd, /* INPUT */
AppName_t *applicationNam e, /* INPUT */
Level_t acsLevelReq /* INPUT */
Version_t *apiVer, /* INPUT */
unsigned short sendQSize, /* INPUT */
unsigned short sendExtraBufs, /* INPUT */
unsigned short recvQSize, /* INPUT */
unsigned short recvExtraBufs /* INPUT */
PrivateData_t *privateData); /* INPUT */
How do I create a C# struct that contains members that are packed
pointers?- Hide quoted text -

- Show quoted text -

Ouch. Sounds like some serious groundwork to get things started. But I
have to do it in any event. Could you please post a brief sample of
unsafe code that could achieve what I'm looking to do with this basic
structure that I listed? That should be enough to get my head around
this and get started. I'd really appreciate it :-)
It would be much easier to use C++/CLI to interact with this legacy code,
because you can just include the header file and use the existing structure
definitions, and access native memory directly. Then, C++/CLI generates
..NET metadata for whatever functions you write, so then you can call C++/CLI
from C# just like you would any other .NET library.
May 17 '07 #6
On May 17, 5:53 pm, "Ben Voigt" <r...@nospam.no spamwrote:
"gregarican " <greg.kuj...@gm ail.comwrote in message

news:11******** **************@ p77g2000hsh.goo glegroups.com.. .


On May 17, 2:10 pm, "Nicholas Paldino [.NET/C# MVP]"
<m...@spam.guar d.caspershouse. comwrote:
You are going to have to create a structure which has IntPtr members
which act as the pointers.
Once you do that, you will also have to define the structures/types
that
the pointers point to.
If you have to allocate the memory for these structures before you
pass
the structure to the function through P/Invoke, you will have to use one
of
the static Alloc* methods on the Marshal class in order to allocate
memory
(or use unsafe code, which would make it a lot easier) and then set the
values of those fields to the blocks of memory that you allocated.
On return, you have to pass those pointers to the PtrToStructure
method
to read the unmanaged memory and return a managed representation to you.
Again, unsafe code would probably be very helpful here, as you could just
access the pointers in memory directly.
--
- Nicholas Paldino [.NET/C# MVP]
- m...@spam.guard .caspershouse.c om
"gregarican " <greg.kuj...@gm ail.comwrote in message
>news:11******* *************** @q23g2000hsg.go oglegroups.com. ..
I am trying to port a legacy CTI application written in another
programming language to C# 2005. From my initial research into it I
see I can utilize the DllImport method to tap into the DLL file (which
is CTSA32.DLL). From there I have documented API for the various C
methods that are invoked, most all of which have an in and an out. You
pass in a data structure and get a data structure returned back.
What's the most straightforward way of mimicing the packed pointers
that are in these C data structures? The other data types I think I
have a handle on. Most of them are unsigned short or else enums. But
the packed pointers seems to be another matter? Here's a sample data
structure that opens the initial CTI session stream:
#include <acs.h>
#include <csta.h>
RetCode_t acsOpenStream(
ACSHandle_t *acsHandle, /* RETURN */
InvokeIDType_t invokeIDType, /* INPUT */
InvokeID_t invokeID, /* INPUT */
StreamType_t streamType, /* INPUT */
ServerID_t *serverID, /* INPUT */
LoginID_t *loginID, /* INPUT */
Passwd_t *passwd, /* INPUT */
AppName_t *applicationNam e, /* INPUT */
Level_t acsLevelReq /* INPUT */
Version_t *apiVer, /* INPUT */
unsigned short sendQSize, /* INPUT */
unsigned short sendExtraBufs, /* INPUT */
unsigned short recvQSize, /* INPUT */
unsigned short recvExtraBufs /* INPUT */
PrivateData_t *privateData); /* INPUT */
How do I create a C# struct that contains members that are packed
pointers?- Hide quoted text -
- Show quoted text -
Ouch. Sounds like some serious groundwork to get things started. But I
have to do it in any event. Could you please post a brief sample of
unsafe code that could achieve what I'm looking to do with this basic
structure that I listed? That should be enough to get my head around
this and get started. I'd really appreciate it :-)

It would be much easier to use C++/CLI to interact with this legacy code,
because you can just include the header file and use the existing structure
definitions, and access native memory directly. Then, C++/CLI generates
.NET metadata for whatever functions you write, so then you can call C++/CLI
from C# just like you would any other .NET library.- Hide quoted text -

- Show quoted text -
Easier is good :-) Looking through all of the Pinvoke hoops I would
have to jump through the task does seem daunting. I haven't used C++/
CLI before so I will start digging in on this tomorrow. Thanks for the
tip!

May 18 '07 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

4
3717
by: Ted | last post by:
Is it possible to use mailslots in .NET using PInvoke? I have a VC++ 6.0 based app that creates and listens to a mailslot. I have a second VC++ 6.0 based app that opens the mailslot and writes to it successfully. So this stuff works. Additionally, I have a VB.NET app that opens the mailslot successfully using CreateFile() (with PInvoke). What looks like a proper handle is returned and there is no error.
3
3470
by: Brett Robichaud | last post by:
I have created a simple background thread to make one pinvoke call into a DLL I've created. My Winforms app spawns the thread in the form load event then go about it's business. The problem is that my form appears to be blocked while the background thread is running. I am very familir with threads in unmanaged code but am just getting into them in C#. Are there issues I need to be aware of with regards to threading a simple pinvoke...
5
2830
by: vertigo | last post by:
Hello I use some win 32 API function for example: HANDLE CreateFile( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile
2
3341
by: Craig | last post by:
I've seen many examples of how to call SHGetFileInfo in shell32.dll to get a files associated icon, but I can't find anywhere how to get the file information (size, last date modified, etc, etc) out of shell32 using pinvoke. I have however seen how to get this information using COM: Shell32.Shell shell = new Shell32.ShellClass(); Shell32.Folder folder = shell.NameSpace("C:\\"); Shell32.FolderItem folderItem =...
5
7886
by: _iycrd | last post by:
After numerous problems, I'm having second thoughts about using C++/CLI to wrap a native DLL. On the other hand, PInvoke seems like it will take a huge amount of work, if it will work at all. The native DLL uses raw data buffers that are normally handed to it (via pointer) from another native function. If I'm piloting this with C#/PInvoke, how could those raw data buffers be created and immobilized? In C++/CLI, there is pin_ptr to...
6
2211
by: Pucca | last post by:
I have a program that originally compiles into a exe file. I changed the compile option to generate dll file. This program calls a com component. Can I use pinvoke in C# to call it? The following is the main dll file. #include "stdafx.h" #define MAX_ADSPATH_CHARS 2048 //*************************************************************************** // local function prototypes
1
6127
by: Steve Richter | last post by:
when I call a win32 api like CreateFile, I would like to be able to pass an enumerated value as the parameter value: hFile = CreateFile( InPath, GENERIC_READ, ShareMode.Read, // this is an enum IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero); I know I can cast the enum: (uint) ShareMode.Read
9
2730
by: Ringo | last post by:
the LeafProject http://www.leafproject.org has a DLL for Face recognition. it is written in C++ but they interface to it from Lisp. I want to interface to it from C#. Their Lisp definitions looks like this. ;;;; REGISTER THE VISION FACE RECOGNITION DLL ;;;;;;;;;;;;;;;;;;;;;;;;;;;; (fli:register-module "FaceRecog.dll") ; an interface function:
0
339
by: gregarican | last post by:
A couple of days ago I was debating about whether to use C++/CLI or C# 2005's PInvoke in order to tie in my VS 2005 app with a legacy csta32.dll file. So far I have tried to call one method out of the csta32.dll and wind up with the PInvoke stack imbalance error. Here are the data types my C# mappings are based on: typedef unsigned long ACSHandle_t; typedef enum { APP_GEN_ID, /* application will provide invokeIDs; any 4-byte value
14
3797
by: Mohamed Mansour | last post by:
Hey there, this will be somewhat a long post, but any response is appreciated! I have done many PInvoke in the past from C++ to C#, but I did PInvoke within C# not C++/CLI. Can someone explain more why C++/CLI would be better to PInvoke than doing the PInvoke in C#? Because, usually in C# as you already know we use DLLImport and extern
0
9666
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9511
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10200
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
10139
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
1
7529
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
6769
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5551
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
4093
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
3
2909
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.