Hi,
I'm trying to use the acm APIs in VB.NET. acmStreamOpen always returns
MMSYSERR_INVALFLAG. Here's how I use it :
declaration is :
Declare Auto Function acmStreamOpen Lib "MsAcm32.dll" (ByRef phas As IntPtr,
ByVal had As Long, ByRef pwfxSrc As MPEGLAYER3WAVEFORMAT, ByRef pm_wfxDst As
WAVEFORMATEX, ByRef pwfltr As Long, ByRef dwCallback As Long, ByRef
dwinstance As Long, ByVal fdwOpen As Int32) As Int32
Used like this :
res = acmStreamOpen(m_has, 0&, m_MP3wfxSrc, m_wfxDst, 0&, 0&, 0&,
ACM_STREAMOPENF_NONREALTIME)
It returns 10, so Invalid Flag... the only specified flag is NonRealtime so
it should work for almost any codec. I'm trying to convert from Mp3 to Wave
(PCM) so I really don't see why it fails. Can someone help me please? I
don't think this is a .NET related error, but I'm posting in .net groups
anyway, in case it does.
Thanks
ThunderMusic 14 3505
ThunderMusic wrote: I'm trying to use the acm APIs in VB.NET. acmStreamOpen always returns MMSYSERR_INVALFLAG. Here's how I use it :
declaration is :
Declare Auto Function acmStreamOpen Lib "MsAcm32.dll" (ByRef phas As IntPtr, ByVal had As Long, ByRef pwfxSrc As MPEGLAYER3WAVEFORMAT, ByRef pm_wfxDst As WAVEFORMATEX, ByRef pwfltr As Long, ByRef dwCallback As Long, ByRef dwinstance As Long, ByVal fdwOpen As Int32) As Int32 Used like this :
res = acmStreamOpen(m_has, 0&, m_MP3wfxSrc, m_wfxDst, 0&, 0&, 0&, ACM_STREAMOPENF_NONREALTIME)
Try this:
Declare Auto Function acmStreamOpen Lib "MsAcm32.dll"
(ByRef phas As IntPtr,
ByVal had As IntPtr,
ByRef pwfxSrc As MPEGLAYER3WAVEFORMAT,
ByRef pm_wfxDst As WAVEFORMATEX,
ByVal pwfltr As IntPtr,
ByVal dwCallback As IntPtr,
ByVal dwinstance As IntPtr,
ByVal fdwOpen As Int32) As Int32
res = acmStreamOpen(m_has, 0, m_MP3wfxSrc, m_wfxDst,
0, 0, 0, ACM_STREAMOPENF_NONREALTIME)
If it doesn't like 0, use IntPtr.Zero.
--
// Alessandro Angeli
// MVP :: Digital Media
// a dot angeli at psynet dot net
ThunderMusic wrote: I'm trying to use the acm APIs in VB.NET. acmStreamOpen always returns MMSYSERR_INVALFLAG. Here's how I use it :
declaration is :
Declare Auto Function acmStreamOpen Lib "MsAcm32.dll" (ByRef phas As IntPtr, ByVal had As Long, ByRef pwfxSrc As MPEGLAYER3WAVEFORMAT, ByRef pm_wfxDst As WAVEFORMATEX, ByRef pwfltr As Long, ByRef dwCallback As Long, ByRef dwinstance As Long, ByVal fdwOpen As Int32) As Int32 Used like this :
res = acmStreamOpen(m_has, 0&, m_MP3wfxSrc, m_wfxDst, 0&, 0&, 0&, ACM_STREAMOPENF_NONREALTIME)
Try this:
Declare Auto Function acmStreamOpen Lib "MsAcm32.dll"
(ByRef phas As IntPtr,
ByVal had As IntPtr,
ByRef pwfxSrc As MPEGLAYER3WAVEFORMAT,
ByRef pm_wfxDst As WAVEFORMATEX,
ByVal pwfltr As IntPtr,
ByVal dwCallback As IntPtr,
ByVal dwinstance As IntPtr,
ByVal fdwOpen As Int32) As Int32
res = acmStreamOpen(m_has, 0, m_MP3wfxSrc, m_wfxDst,
0, 0, 0, ACM_STREAMOPENF_NONREALTIME)
If it doesn't like 0, use IntPtr.Zero.
--
// Alessandro Angeli
// MVP :: Digital Media
// a dot angeli at psynet dot net
hi,
now it returns 512, and I don't know what it means...
"Alessandro Angeli [MVP::DigitalMedia]" <no****@nowhere.in.the.net> a écrit
dans le message de news: ev*************@TK2MSFTNGP10.phx.gbl... ThunderMusic wrote:
I'm trying to use the acm APIs in VB.NET. acmStreamOpen always returns MMSYSERR_INVALFLAG. Here's how I use it :
declaration is :
Declare Auto Function acmStreamOpen Lib "MsAcm32.dll" (ByRef phas As IntPtr, ByVal had As Long, ByRef pwfxSrc As MPEGLAYER3WAVEFORMAT, ByRef pm_wfxDst As WAVEFORMATEX, ByRef pwfltr As Long, ByRef dwCallback As Long, ByRef dwinstance As Long, ByVal fdwOpen As Int32) As Int32 Used like this :
res = acmStreamOpen(m_has, 0&, m_MP3wfxSrc, m_wfxDst, 0&, 0&, 0&, ACM_STREAMOPENF_NONREALTIME)
Try this:
Declare Auto Function acmStreamOpen Lib "MsAcm32.dll" (ByRef phas As IntPtr, ByVal had As IntPtr, ByRef pwfxSrc As MPEGLAYER3WAVEFORMAT, ByRef pm_wfxDst As WAVEFORMATEX, ByVal pwfltr As IntPtr, ByVal dwCallback As IntPtr, ByVal dwinstance As IntPtr, ByVal fdwOpen As Int32) As Int32
res = acmStreamOpen(m_has, 0, m_MP3wfxSrc, m_wfxDst, 0, 0, 0, ACM_STREAMOPENF_NONREALTIME)
If it doesn't like 0, use IntPtr.Zero.
-- // Alessandro Angeli // MVP :: Digital Media // a dot angeli at psynet dot net
ok, I found the 512 return value means that the conversion is impossible.
The thing is, I'm starting from a mp3 file (96kbps) to a Wave File (44100,
16bits, stereo). Here are the settings I use (I get these with the
acmFormatSuggest Function) :
- m_wfxDst {WAVEFORMATEX} WAVEFORMATEX
cbSize 0 Short
nAvgBytesPerSec 176400 Integer
nBlockAlign 2 Short
nChannels 2 Short
nSamplesPerSec 44100 Integer
wBitsPerSample 16 Short
wFormatTag 1 Short
- m_MP3wfxSrc {MPEGLAYER3WAVEFORMAT} MPEGLAYER3WAVEFORMAT
fdwFlags 0 Integer
nBlockSize 1 Short
nCodecDelay 0 Short
nFramesPerBlock 1 Short
- wfx {WAVEFORMATEX} WAVEFORMATEX
cbSize 12 Short
nAvgBytesPerSec 12000 Integer
nBlockAlign 0 Short
nChannels 2 Short
nSamplesPerSec 44100 Integer
wBitsPerSample 16 Short
wFormatTag 85 Short
wID 1 Short
Everything seems to be right, so I don't understand why I get this error.
Thanks for the help
ThunderMusic
"ThunderMusic" <NO.danlat.at.hotmail.com.SPAM> a écrit dans le message de
news: ew*************@TK2MSFTNGP15.phx.gbl... hi, now it returns 512, and I don't know what it means...
"Alessandro Angeli [MVP::DigitalMedia]" <no****@nowhere.in.the.net> a écrit dans le message de news: ev*************@TK2MSFTNGP10.phx.gbl... ThunderMusic wrote:
I'm trying to use the acm APIs in VB.NET. acmStreamOpen always returns MMSYSERR_INVALFLAG. Here's how I use it :
declaration is :
Declare Auto Function acmStreamOpen Lib "MsAcm32.dll" (ByRef phas As IntPtr, ByVal had As Long, ByRef pwfxSrc As MPEGLAYER3WAVEFORMAT, ByRef pm_wfxDst As WAVEFORMATEX, ByRef pwfltr As Long, ByRef dwCallback As Long, ByRef dwinstance As Long, ByVal fdwOpen As Int32) As Int32 Used like this :
res = acmStreamOpen(m_has, 0&, m_MP3wfxSrc, m_wfxDst, 0&, 0&, 0&, ACM_STREAMOPENF_NONREALTIME)
Try this:
Declare Auto Function acmStreamOpen Lib "MsAcm32.dll" (ByRef phas As IntPtr, ByVal had As IntPtr, ByRef pwfxSrc As MPEGLAYER3WAVEFORMAT, ByRef pm_wfxDst As WAVEFORMATEX, ByVal pwfltr As IntPtr, ByVal dwCallback As IntPtr, ByVal dwinstance As IntPtr, ByVal fdwOpen As Int32) As Int32
res = acmStreamOpen(m_has, 0, m_MP3wfxSrc, m_wfxDst, 0, 0, 0, ACM_STREAMOPENF_NONREALTIME)
If it doesn't like 0, use IntPtr.Zero.
-- // Alessandro Angeli // MVP :: Digital Media // a dot angeli at psynet dot net
"Error 512 - Not Possible" is the random return when you have upset the
Audio Compression Manager genie <g>.
I think that the WAVEFORMAT for the MPeg3 should have some extra bytes
added at the end of its structure. The only information I have for it
is a note in C / Delphi ...
// define MP3 output format
LPMPEGLAYER3WAVEFORMAT mp3format = (LPMPEGLAYER3WAVEFORMAT) LocalAlloc(
LPTR, maxFormatSize );
mp3format->wfx.cbSize = MPEGLAYER3_WFX_EXTRA_BYTES;
mp3format->wfx.wFormatTag = WAVE_FORMAT_MPEGLAYER3;
mp3format->wfx.nChannels = 2;
mp3format->wfx.nAvgBytesPerSec = 16000;
mp3format->wfx.wBitsPerSample = 0;
mp3format->wfx.nBlockAlign = 1;
mp3format->wfx.nSamplesPerSec = 44100; // 44.1kHz
mp3format->wID = MPEGLAYER3_ID_MPEG; <-thik this is ok
mp3format->fdwFlags = MPEGLAYER3_FLAG_PADDING_OFF;
mp3format->nBlockSize = MP3_BLOCK_SIZE; // 417
mp3format->nFramesPerBlock = 1; // MUST BE ONE
mp3format->nCodecDelay = 0; // 0 for LAME or 1393 for fraunh..
// Delphi declaration
TMpegAudioStreamFormat = packed record
wfx:TWavFormat ;
wID:WORD;
fdwFlags:DWORD;
nBlockSize:WORD;
nFramesPerBlock:WORD;
nCodecDelay:WORD;
end;
As you can see the mp3Format includes the WAVEFORMATEX structure and
then adds MPEGLAYER3_WFX_EXTRA_BYTES extra bytes. I don't know what the
value of this constant is, but it looks like 10 4 (DWord) + 6 (Word *
3).
I also think you may also need the Frauenhofer professional codec if
you are doing quality decoding. I had it in a file named I3codecp.exe
(first letter is eye). If you Google for it you may find it. Just run
it and it installs the codec.
To use ACM you must convert at the same sample rate (which you are). If
you want to change sample rate you have to do a three-stage conversion,
firstly to the same sample rate with different formats, then to
different sample rates at the same format. It makes for great fun with
multiple buffers in one line with multiple ACM streams <g>.
Alan Lloyd
ok, it works now with the good values in nBlockSize and nBlockAlign.... Now
I have a problem farther in the code (when it comes to allocate the
buffers), but it's strictly a .NET problem, so I will post in .NET groups...
thanks a lot
ThunderMusic
<al********@aol.com> a écrit dans le message de news: 11*********************@g49g2000cwa.googlegroups.c om... "Error 512 - Not Possible" is the random return when you have upset the Audio Compression Manager genie <g>.
I think that the WAVEFORMAT for the MPeg3 should have some extra bytes added at the end of its structure. The only information I have for it is a note in C / Delphi ...
// define MP3 output format LPMPEGLAYER3WAVEFORMAT mp3format = (LPMPEGLAYER3WAVEFORMAT) LocalAlloc(
LPTR, maxFormatSize ); mp3format->wfx.cbSize = MPEGLAYER3_WFX_EXTRA_BYTES; mp3format->wfx.wFormatTag = WAVE_FORMAT_MPEGLAYER3; mp3format->wfx.nChannels = 2; mp3format->wfx.nAvgBytesPerSec = 16000; mp3format->wfx.wBitsPerSample = 0; mp3format->wfx.nBlockAlign = 1; mp3format->wfx.nSamplesPerSec = 44100; // 44.1kHz mp3format->wID = MPEGLAYER3_ID_MPEG; <-thik this is ok mp3format->fdwFlags = MPEGLAYER3_FLAG_PADDING_OFF; mp3format->nBlockSize = MP3_BLOCK_SIZE; // 417 mp3format->nFramesPerBlock = 1; // MUST BE ONE mp3format->nCodecDelay = 0; // 0 for LAME or 1393 for fraunh..
// Delphi declaration TMpegAudioStreamFormat = packed record wfx:TWavFormat ; wID:WORD; fdwFlags:DWORD; nBlockSize:WORD; nFramesPerBlock:WORD; nCodecDelay:WORD; end;
As you can see the mp3Format includes the WAVEFORMATEX structure and then adds MPEGLAYER3_WFX_EXTRA_BYTES extra bytes. I don't know what the value of this constant is, but it looks like 10 4 (DWord) + 6 (Word * 3).
I also think you may also need the Frauenhofer professional codec if you are doing quality decoding. I had it in a file named I3codecp.exe (first letter is eye). If you Google for it you may find it. Just run it and it installs the codec.
To use ACM you must convert at the same sample rate (which you are). If you want to change sample rate you have to do a three-stage conversion, firstly to the same sample rate with different formats, then to different sample rates at the same format. It makes for great fun with multiple buffers in one line with multiple ACM streams <g>.
Alan Lloyd al********@aol.com wrote: LPTR, maxFormatSize ); mp3format->wfx.cbSize = MPEGLAYER3_WFX_EXTRA_BYTES; mp3format->wfx.wFormatTag = WAVE_FORMAT_MPEGLAYER3; mp3format->wfx.nChannels = 2; mp3format->wfx.nAvgBytesPerSec = 16000; mp3format->wfx.wBitsPerSample = 0; mp3format->wfx.nBlockAlign = 1; mp3format->wfx.nSamplesPerSec = 44100; // 44.1kHz mp3format->wID = MPEGLAYER3_ID_MPEG; <-thik this is ok mp3format->fdwFlags = MPEGLAYER3_FLAG_PADDING_OFF; mp3format->nBlockSize = MP3_BLOCK_SIZE; // 417 mp3format->nFramesPerBlock = 1; // MUST BE ONE mp3format->nCodecDelay = 0; // 0 for LAME or 1393 for fraunh..
- 1393 as nCodedDelay when using the FhG codec is not
necessary (it works even with 0).
- 417 as nBlockSize is only valid for 44KHz/128Kbps/stereo:
it is the actual MP3 frame size and it depends on the
combination of samplerate/bitrate/channels and
nFramesPerBlock
- nFramesPerBlock should allow other values as long as
nBlockSize is also changed accordingly
As you can see the mp3Format includes the WAVEFORMATEX structure and then adds MPEGLAYER3_WFX_EXTRA_BYTES extra bytes. I don't know what the value of this constant is, but it looks like 10 4 (DWord) + 6 (Word * 3).
From mmreg.h:
#define MPEGLAYER3_WFX_EXTRA_BYTES 12
I also think you may also need the Frauenhofer professional codec if you are doing quality decoding. I had it in a file named I3codecp.exe (first letter is eye). If you Google for it you may find it. Just run it and it installs the codec.
It is L3CodecP.acm and not I3CodecP.acm (L3 as in Layer3,
that is MP3) and it is also illegal to use without a license
from FhG, which is impossible to get AFAIK. I don't think
there is any difference in quality between the pro codec (P)
and the usual one in Windows (A): the A is simply limited to
a max of 56Kbps/24KHz when encoding, while the P had no
limits.
--
// Alessandro Angeli
// MVP :: Digital Media
// a dot angeli at psynet dot net
ThunderMusic wrote: ok, I found the 512 return value means that the conversion is impossible. The thing is, I'm starting from a mp3 file (96kbps) to a Wave File (44100, 16bits, stereo). Here are the settings I use (I get these with the acmFormatSuggest Function) : - m_wfxDst {WAVEFORMATEX} WAVEFORMATEX cbSize 0 Short nAvgBytesPerSec 176400 Integer nBlockAlign 2 Short nChannels 2 Short nSamplesPerSec 44100 Integer wBitsPerSample 16 Short wFormatTag 1 Short
Are you really sure you got this from acmFormatSuggest()?
With WAVE_FORMAT_PCM audio nBlockAlign must be
nChannels*wBitsPerSample/8, that is 4 and not 2.
- m_MP3wfxSrc {MPEGLAYER3WAVEFORMAT} MPEGLAYER3WAVEFORMAT fdwFlags 0 Integer nBlockSize 1 Short nCodecDelay 0 Short nFramesPerBlock 1 Short - wfx {WAVEFORMATEX} WAVEFORMATEX cbSize 12 Short nAvgBytesPerSec 12000 Integer nBlockAlign 0 Short nChannels 2 Short nSamplesPerSec 44100 Integer wBitsPerSample 16 Short wFormatTag 85 Short wID 1 Short
Same as before, acmFormatSuggest() filled this in?
nBlockAlign is supposed to be 1 for WAVE_FORMAT_MPEGLAYER3
and nBlockSize is supposed to be the MP3 frame size, which
is always greater than 1 (313 for 44KHz/96Kbps/stereo).
nCodecDelay should be 1393 when using the system's FhG codec
(but it should work with 0 as well).
--
// Alessandro Angeli
// MVP :: Digital Media
// a dot angeli at psynet dot net
> #define MPEGLAYER3_WFX_EXTRA_BYTES 12
OK, but the Delphi structure shows 10, and interrogating
the driver with ACM gives 14 <g>
On another site the extra bytes were commented with "Void as every
frame of an MPEG file has the information which would be contained in
the extra bytes" - is this true ? It is L3CodecP.acm and not I3CodecP.acm (L3 as in Layer3, that is MP3)
My file is I3CodecP.acm (I for India) and that is how I downloaded it.
I don't know if it _is_ Frauenhofer's although that is how it is
labelled with an ACM call. When I got it (some years ago associated
with an article) I emailed Frauenhofer because I suspected it _might_
be pirated. They did not even reply so I assumed that they did not
care.
Alan Lloyd
and it is also illegal to use without a license from FhG, which is impossible to get AFAIK. al********@aol.com wrote: #define MPEGLAYER3_WFX_EXTRA_BYTES 12 OK, but the Delphi structure shows 10, and interrogating the driver with ACM gives 14 <g>
The Delphi definition is wrong and your ACM codec is not
compliant with the official definition of WAVEFORMATEX for
WAVE_FORMAT_MPEGLAYER3 given in the ACM registry, that is
mmreg.h. The original FhG codec and LAME are compliant and
so are other codecs. Besides, the structure should be DWORD
aligned (even if it is not an absolute requirement) and both
10 and 14 are not.
On another site the extra bytes were commented with "Void as every frame of an MPEG file has the information which would be contained in the extra bytes" - is this true ?
More or less.
- wID
not present in the header (and not necessary?)
- fdwFlags
padding; a bit in the header
- nBlockSize
not present in the header but implied by other bitfields
- nFramesPerBlock
not present in the header (and not necessary?)
- nCodecDelay
not present in the header (and not necessary?)
My file is I3CodecP.acm (I for India) and that is how I downloaded it. I don't know if it _is_ Frauenhofer's although that is how it is labelled with an ACM call.
If it's not a lower-case L (l), then I really doubt it's the
original FhG codec or, at least, they changed the name of
the file.
--
// Alessandro Angeli
// MVP :: Digital Media
// a dot angeli at psynet dot net
Alessandro Angeli [MVP::DigitalMedia] wrote: al********@aol.com wrote:
#define MPEGLAYER3_WFX_EXTRA_BYTES 12
OK, but the Delphi structure shows 10, and interrogating the driver with ACM gives 14 <g>
The Delphi definition is wrong [...]
On second thought, the Delphi definition you posted is
correct and reserves 12 bytes, not 10.
--
// Alessandro Angeli
// MVP :: Digital Media
// a dot angeli at psynet dot net
Alessandro Angeli [MVP::DigitalMedia] wrote: al********@aol.com wrote:
#define MPEGLAYER3_WFX_EXTRA_BYTES 12
OK, but the Delphi structure shows 10, and interrogating the driver with ACM gives 14 <g>
The Delphi definition is wrong [...]
On second thought, the Delphi definition you posted is
correct and reserves 12 bytes, not 10.
--
// Alessandro Angeli
// MVP :: Digital Media
// a dot angeli at psynet dot net
> > mp3format->nBlockSize = MP3_BLOCK_SIZE; // 417 - 417 as nBlockSize is only valid for 44KHz/128Kbps/stereo: it is the actual MP3 frame size and it depends on the combination of samplerate/bitrate/channels and nFramesPerBlock
Do you know the relationship betwee nBlockSize and nSamplesPerSec /
bitrate / nChannels / nFramesPerBlock ?
Alan Lloyd al********@aol.com wrote: Do you know the relationship betwee nBlockSize and nSamplesPerSec / bitrate / nChannels / nFramesPerBlock ? http://groups.google.com/group/micro...952ae237dc099d
Look at how the frame's payload size is computed. You can
find the complete tables on www.wotsit.org (search from
"mp3" and it's in one of the files).
Anyway, the best way to fill an MPEGLAYER3WAVEFORMAT is to
ask the ACM.
--
// Alessandro Angeli
// MVP :: Digital Media
// a dot angeli at psynet dot net This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: yuri |
last post by:
Hi all
At coding XP Themes i can't get "GetThemeColor" to work.
It always fails ("not found" err. code) regardless of which control parts
and states entered.
Could somebody help me with advice?...
|
by: Fett |
last post by:
Problem: My member variables in the child class are always null. I
don't know why this happens!
I have a base class for handling a user flow in my web, CWebUseCase,
the class is declared like:...
|
by: Pete H |
last post by:
I would like to have my new C++ projects start out with two configurations, UnicodeDebug and UnicodeRelease, instead of the standard Debug and Release configurations that Visual Studio always...
|
by: ThunderMusic |
last post by:
Hi,
I'm trying to use the acm APIs in VB.NET. acmStreamOpen always returns
MMSYSERR_INVALFLAG. Here's how I use it :
declaration is :
Declare Auto Function acmStreamOpen Lib "MsAcm32.dll"...
|
by: snavebelac |
last post by:
Hi everyone
I have a system running on a 2 server environment. One server has the internal database (SQL SERVER 2000 with an MSAccess front end on the clients) and is not open to the internet. ...
| |
by: itsolution |
last post by:
Hi folks,
Could you shed some light on this issue?
my program is running on Freebsd as a daemon. When user sends a
request, it forks itself and lets its child process handles the
request....
|
by: =?Utf-8?B?SmF5IE1pbGxlcg==?= |
last post by:
I'm having problems with the login control when I publish my site.
Everything works fine when I run the application from Visual Studio and when
I browse directly to the site where it is being...
|
by: Rick Collard |
last post by:
Using DAO 3.6 on an Access 2002 database, I'm getting unexpected
results with the FindFirst method. Here's the simple code to test:
Public Sub FindIt()
Dim db As Database, rs As Recordset...
|
by: =?Utf-8?B?QXJtaW4gR2FsbGlrZXI=?= |
last post by:
Hi
I wrote a test for a workflow. Unfortunately my assertions in the
eventhandler which I set up during initialization, fail in every case...
What's the problem??
public void...
|
by: Richie Kernagan |
last post by:
Howdy
Problem with the fread() call on MS Visual Studio 2005 running under Win 64.
The parameters to fread size and count are both size_t ie 64 bits. Even
so the call fails when the size arg...
|
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,...
| |
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...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers,...
|
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...
|
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...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
|
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
| |
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 ...
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |