473,407 Members | 2,598 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,407 software developers and data experts.

Bat file returns running status in VBA

67 64KB
Hi,

Could anybody tell me how to get returning code(success or fail) from the following code so I can know what should I do in my VBA. What can I do now is show message from bat file, but I don't know how to get it running status and pass it to VBA. This post is original from NeoPa.

Expand|Select|Wrap|Line Numbers
  1. Option Compare Database
  2.  Option Explicit
  3.  
  4.  'Windows API Variable Prefixes
  5.  'cb = Count of Bytes (32-bit)
  6.  'w  = Word (16-bit)
  7.  'dw = Double Word (32-bit)
  8.  'lp = Long Pointer (32-bit)
  9.  'b  = Boolean (32-bit)
  10.  'h  = Handle (32-bit)
  11.  'ul = Unsigned Long (32-bit)
  12.  
  13.  Private Const conUseShowWindow = &H1&
  14.  Private Const conNormalPriority = &H20&
  15.  Private Const conInfinite = -1&
  16.  
  17.  Private Type typStartupInfo
  18.      cbLen As Long
  19.      lpReserved As String
  20.      lpDesktop As String
  21.      lpTitle As String
  22.      dwX As Long
  23.      dwY As Long
  24.      dwXSize As Long
  25.      dwYSize As Long
  26.      dwXCount As Long
  27.      dwYCount As Long
  28.      dwFillAtt As Long
  29.      dwFlags As Long
  30.      wShowWindow As Integer
  31.      cbReserved2 As Integer
  32.      lpReserved2 As Long
  33.      hStdIn As Long
  34.      hStdOut As Long
  35.      hStdErr As Long
  36.  End Type
  37.  
  38.  Private Type typProcInfo
  39.      hProc As Long
  40.      hThread As Long
  41.      dwProcID As Long
  42.      dwThreadID As Long
  43.  End Type
  44.  
  45.  Private Declare Function CreateProcessA Lib "kernel32" ( _
  46.      ByVal lpApplicationName As Long, _
  47.      ByVal lpCommandLine As String, _
  48.      ByVal lpProcessAttributes As Long, _
  49.      ByVal lpThreadAttributes As Long, _
  50.      ByVal bInheritHandles As Long, _
  51.      ByVal dwCreationFlags As Long, _
  52.      ByVal lpEnvironment As Long, _
  53.      ByVal lpCurrentDirectory As Long, _
  54.      lpStartupInfo As typStartupInfo, _
  55.      lpProcessInformation As typProcInfo) As Long
  56.  Private Declare Function WaitForSingleObject Lib "kernel32" ( _
  57.      ByVal hHandle As Long, _
  58.      ByVal dwMilliseconds As Long) As Long
  59.  Private Declare Function CloseHandle Lib "kernel32" ( _
  60.      ByVal hObject As Long) As Long
  61.  
  62.  'ShellWait() executes a command synchronously (Shell() works asynchronously).
  63.  Public Sub ShellWait(strCommand As String, _
  64.                       Optional intWinStyle As Integer = vbNormalFocus)
  65.      Dim objProcInfo As typProcInfo
  66.      Dim objStart As typStartupInfo
  67.  
  68.      'Initialize the typStartupInfo structure:
  69.      With objStart
  70.          .cbLen = Len(objStart)
  71.          .dwFlags = conUseShowWindow
  72.          .wShowWindow = intWinStyle
  73.      End With
  74.      'Start the shelled application:
  75.      Call CreateProcessA(lpApplicationName:=0&, _
  76.                          lpCommandLine:=strCommand, _
  77.                          lpProcessAttributes:=0&, _
  78.                          lpThreadAttributes:=0&, _
  79.                          bInheritHandles:=1&, _
  80.                          dwCreationFlags:=conNormalPriority, _
  81.                          lpEnvironment:=0&, _
  82.                          lpCurrentDirectory:=0&, _
  83.                          lpStartupInfo:=objStart, _
  84.                          lpProcessInformation:=objProcInfo)
  85.      'Wait for the shelled application to finish
  86.      Call WaitForSingleObject(hHandle:=objProcInfo.hProc, _
  87.                               dwMilliseconds:=conInfinite)
  88.      Call CloseHandle(hObject:=objProcInfo.hProc)
  89.  End Sub
  90.  
Could anybody point me on how to do this?

Best regards,
Sophanna
Mar 20 '14 #1
11 3002
NeoPa
32,556 Expert Mod 16PB
Good question Sophanna. Not an easy one though :-(

Though it surprises me somewhat, I see nothing that refers to any return code from the available information.

Let me explain as far as I can :
The only parameter I see there that might be used for returning information would be the one called objProcInfo (which is of type typProcInfo as declared from lines #38 to #43. Nothing in there pertains to a return code as far as I can see.

Another issue that may cloud things for BAT or CMD files particularly, is that they are not executed directly by Windows itself. The are interpreted and executed by the command line processor. BAT files are processed by the old DOS compatible Command.com and CMD files are processed by Windows' own CMD.exe. Thus, I would expect the return code is only available to any processes executing within that same environment (IE. Command.com for BAT files and CMD.exe for CMD files).

I'd be interested to here from anyone else who may be able to throw any light on this one. It's not impossible there is a way, but if it exists at all then I would expect it's a bit obscure.

@Sophanna.
If this is important to your project you could save it from the BAT file itself into a specifically named file for checking by your project. If it's simply necessary to know if it failed or not then the following code at the end of your BAT file should do it (I'm assuming the current folder is an adequate place to save the file) :
Expand|Select|Wrap|Line Numbers
  1. ...
  2. DEL Status.Txt
  3. {Your program whose status you want to capture runs here}
  4. IF ERRORLEVEL 1 ECHO Failed >Status.Txt
If the file exists after the process has completed then the program failed. I hope this is helpful.
Mar 20 '14 #2
If the function CreateProcessA succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.

I have code that dumps the ouput of a command into a string, which I could post if you want.

Expand|Select|Wrap|Line Numbers
  1. 'Start the shelled application:
  2. if CreateProcessA(lpApplicationName:=0&, _
  3.                         lpCommandLine:=strCommand, _
  4.                         lpProcessAttributes:=0&, _
  5.                         lpThreadAttributes:=0&, _
  6.                         bInheritHandles:=1&, _
  7.                         dwCreationFlags:=conNormalPriority, _
  8.                         lpEnvironment:=0&, _
  9.                         lpCurrentDirectory:=0&, _
  10.                         lpStartupInfo:=objStart, _
  11.                         lpProcessInformation:=objProcInfo)
  12.     'Wait for the shelled application to finish
  13.     Call WaitForSingleObject(hHandle:=objProcInfo.hProc,  dwMilliseconds:=conInfinite)
  14. else
  15.         'failed
  16. end if
Mar 20 '14 #3
sophannaly
67 64KB
Hi NeoPa,

Thanks you so much for your reply. Since I can't get what I want from that code but you had give me idea on generating something else which I also can evaluate its running status.

Best regards,
Sophanna
Mar 21 '14 #4
sophannaly
67 64KB
Hi Hennepin,

Could you show me the whole code please?

Best regards,
Sophanna
Mar 21 '14 #5
NeoPa
32,556 Expert Mod 16PB
Interesting ideas Hennepin.

Unfortunately, there are problems with both :
  1. The return value of CreateProcessA is determined before the BAT file actually runs. Whatever it returns would not be relevant to what ran within the BAT file.
  2. Once the process has completed the thread no longer exists. I would expect GetLastError() to return a value relevant to the Access VBA thread that called it rather than being able to reference a separate thread which no longer exists.

As I mentioned earlier (though I can't be absolutely sure about it) I suspect that determining the return value after the whole process has completed will prove impossible.

Please don't let this put you off though. I was very interested to see you'd posted and it certainly gave me something to think about and check up on :-)
Mar 21 '14 #6
sophannaly
67 64KB
Hi NeoPa,

May I explain you about what am I trying to do, so maybe you could give me some ideas about this. I use access as front end database. And I design Talend Open Studio ETL job and build it as job script(bat file) which about deploying data from front end to back end database. Before calling this ETL job script, in VBA I have update query(such as change field from 0 to 1) then call this bat file to run.

During running job script, maybe there is an error such as back end database service is closed, then job run fail, there is a message about error to show user. So in my VBA needs to know that this job is fail, so I should use another update query(to change that field from 1 to 0).

Could you provide some ideas about this?

Best regards,
Sophanna
Mar 21 '14 #7
NeoPa
I realized both of your points as I was going home from work last night.
I will fail if it can't run the bat file but will not report what the bat file returns.
The code below will return the ouput of the bat file.
Been using it for about 10 years in VB6 and VBA.

sophannaly
The code below will return any screen dump to the cmd window in a string.


Expand|Select|Wrap|Line Numbers
  1. Option Explicit
  2. ''''''''''''''''''''''''''''''''''''''''
  3. ' Joacim Andersson, Brixoft Software
  4. ' http://www.brixoft.net
  5. ''''''''''''''''''''''''''''''''''''''''
  6.  
  7. ' STARTUPINFO flags
  8. Private Const STARTF_USESHOWWINDOW = &H1
  9. Private Const STARTF_USESTDHANDLES = &H100
  10.  
  11. ' ShowWindow flags
  12. Private Const SW_HIDE = 0
  13.  
  14. ' DuplicateHandle flags
  15. Private Const DUPLICATE_CLOSE_SOURCE = &H1
  16. Private Const DUPLICATE_SAME_ACCESS = &H2
  17.  
  18. ' Error codes
  19. Private Const ERROR_BROKEN_PIPE = 109
  20.  
  21. Private Type SECURITY_ATTRIBUTES
  22.     nLength As Long
  23.     lpSecurityDescriptor As Long
  24.     bInheritHandle As Long
  25. End Type
  26.  
  27. Private Type STARTUPINFO
  28.     cb As Long
  29.     lpReserved As String
  30.     lpDesktop As String
  31.     lpTitle As String
  32.     dwX As Long
  33.     dwY As Long
  34.     dwXSize As Long
  35.     dwYSize As Long
  36.     dwXCountChars As Long
  37.     dwYCountChars As Long
  38.     dwFillAttribute As Long
  39.     dwFlags As Long
  40.     wShowWindow As Integer
  41.     cbReserved2 As Integer
  42.     lpReserved2 As Long
  43.     hStdInput As Long
  44.     hStdOutput As Long
  45.     hStdError As Long
  46. End Type
  47.  
  48. Private Type PROCESS_INFORMATION
  49.     hProcess As Long
  50.     hThread As Long
  51.     dwProcessId As Long
  52.     dwThreadID As Long
  53. End Type
  54.  
  55. Private Declare Function CreatePipe _
  56.  Lib "kernel32" ( _
  57.  phReadPipe As Long, _
  58.  phWritePipe As Long, _
  59.  lpPipeAttributes As Any, _
  60.  ByVal nSize As Long) As Long
  61.  
  62. Private Declare Function ReadFile _
  63.  Lib "kernel32" ( _
  64.  ByVal hFile As Long, _
  65.  lpBuffer As Any, _
  66.  ByVal nNumberOfBytesToRead As Long, _
  67.  lpNumberOfBytesRead As Long, _
  68.  lpOverlapped As Any) As Long
  69.  
  70. Private Declare Function CreateProcess _
  71.  Lib "kernel32" Alias "CreateProcessA" ( _
  72.  ByVal lpApplicationName As String, _
  73.  ByVal lpCommandLine As String, _
  74.  lpProcessAttributes As Any, _
  75.  lpThreadAttributes As Any, _
  76.  ByVal bInheritHandles As Long, _
  77.  ByVal dwCreationFlags As Long, _
  78.  lpEnvironment As Any, _
  79.  ByVal lpCurrentDriectory As String, _
  80.  lpStartupInfo As STARTUPINFO, _
  81.  lpProcessInformation As PROCESS_INFORMATION) As Long
  82.  
  83. Private Declare Function GetCurrentProcess _
  84.  Lib "kernel32" () As Long
  85.  
  86. Private Declare Function DuplicateHandle _
  87.  Lib "kernel32" ( _
  88.  ByVal hSourceProcessHandle As Long, _
  89.  ByVal hSourceHandle As Long, _
  90.  ByVal hTargetProcessHandle As Long, _
  91.  lpTargetHandle As Long, _
  92.  ByVal dwDesiredAccess As Long, _
  93.  ByVal bInheritHandle As Long, _
  94.  ByVal dwOptions As Long) As Long
  95.  
  96. Private Declare Function CloseHandle _
  97.  Lib "kernel32" ( _
  98.  ByVal hObject As Long) As Long
  99.  
  100. Private Declare Function OemToCharBuff _
  101.  Lib "user32" Alias "OemToCharBuffA" ( _
  102.  lpszSrc As Any, _
  103.  ByVal lpszDst As String, _
  104.  ByVal cchDstLength As Long) As Long
  105.  
  106. ' Function GetCommandOutput
  107. '
  108. ' sCommandLine:  [in] Command line to launch
  109. ' blnStdOut        [in,opt] True (defualt) to capture output to STDOUT
  110. ' blnStdErr        [in,opt] True to capture output to STDERR. False is default.
  111. ' blnOEMConvert:   [in,opt] True (default) to convert DOS characters to Windows, False to skip conversion
  112. '
  113. ' Returns:       String with STDOUT and/or STDERR output
  114. '
  115. Public Function GetCommandOutput( _
  116.  sCommandLine As String, _
  117.  Optional blnStdOut As Boolean = True, _
  118.  Optional blnStdErr As Boolean = False, _
  119.  Optional blnOEMConvert As Boolean = True _
  120. ) As String
  121.  
  122.     Dim hPipeRead As Long, hPipeWrite1 As Long, hPipeWrite2 As Long
  123.     Dim hCurProcess As Long
  124.     Dim sa As SECURITY_ATTRIBUTES
  125.     Dim si As STARTUPINFO
  126.     Dim pi As PROCESS_INFORMATION
  127.     Dim baOutput() As Byte
  128.     Dim sNewOutput As String
  129.     Dim lBytesRead As Long
  130.     Dim fTwoHandles As Boolean
  131.  
  132.     Dim lRet As Long
  133.  
  134.     Const BUFSIZE = 1024      ' pipe buffer size
  135.  
  136.     ' At least one of them should be True, otherwise there's no point in calling the function
  137.     If (Not blnStdOut) And (Not blnStdErr) Then
  138.         Err.Raise 5         ' Invalid Procedure call or Argument
  139.     End If
  140.  
  141.     ' If both are true, we need two write handles. If not, one is enough.
  142.     fTwoHandles = blnStdOut And blnStdErr
  143.  
  144.     ReDim baOutput(BUFSIZE - 1) As Byte
  145.  
  146.     With sa
  147.         .nLength = Len(sa)
  148.         .bInheritHandle = 1    ' get inheritable pipe handles
  149.     End With
  150.  
  151.     If CreatePipe(hPipeRead, hPipeWrite1, sa, BUFSIZE) = 0 Then
  152.         Exit Function
  153.     End If
  154.  
  155.     hCurProcess = GetCurrentProcess()
  156.  
  157.     ' Replace our inheritable read handle with an non-inheritable. Not that it
  158.     ' seems to be necessary in this case, but the docs say we should.
  159.     Call DuplicateHandle(hCurProcess, hPipeRead, hCurProcess, hPipeRead, 0&, 0&, DUPLICATE_SAME_ACCESS Or DUPLICATE_CLOSE_SOURCE)
  160.  
  161.     ' If both STDOUT and STDERR should be redirected, get an extra handle.
  162.     If fTwoHandles Then
  163.         Call DuplicateHandle(hCurProcess, hPipeWrite1, hCurProcess, hPipeWrite2, 0&, 1&, DUPLICATE_SAME_ACCESS)
  164.     End If
  165.  
  166.     With si
  167.         .cb = Len(si)
  168.         .dwFlags = STARTF_USESHOWWINDOW Or STARTF_USESTDHANDLES
  169.         .wShowWindow = SW_HIDE          ' hide the window
  170.  
  171.         If fTwoHandles Then
  172.             .hStdOutput = hPipeWrite1
  173.             .hStdError = hPipeWrite2
  174.         ElseIf blnStdOut Then
  175.             .hStdOutput = hPipeWrite1
  176.         Else
  177.             .hStdError = hPipeWrite1
  178.         End If
  179.     End With
  180.  
  181.     If CreateProcess(vbNullString, sCommandLine, ByVal 0&, ByVal 0&, 1, 0&, ByVal 0&, vbNullString, si, pi) Then
  182.  
  183.         ' Close thread handle - we don't need it
  184.         Call CloseHandle(pi.hThread)
  185.  
  186.         ' Also close our handle(s) to the write end of the pipe. This is important, since
  187.         ' ReadFile will *not* return until all write handles are closed or the buffer is full.
  188.         Call CloseHandle(hPipeWrite1)
  189.         hPipeWrite1 = 0
  190.         If hPipeWrite2 Then
  191.             Call CloseHandle(hPipeWrite2)
  192.             hPipeWrite2 = 0
  193.         End If
  194.  
  195.         Do
  196.             ' Add a DoEvents to allow more data to be written to the buffer for each call.
  197.             ' This results in fewer, larger chunks to be read.
  198.             'DoEvents
  199.  
  200.             If ReadFile(hPipeRead, baOutput(0), BUFSIZE, lBytesRead, ByVal 0&) = 0 Then
  201.                 Exit Do
  202.             End If
  203.  
  204.             If blnOEMConvert Then
  205.                 ' convert from "DOS" to "Windows" characters
  206.                 sNewOutput = String$(lBytesRead, 0)
  207.                 Call OemToCharBuff(baOutput(0), sNewOutput, lBytesRead)
  208.             Else
  209.                 ' perform no conversion (except to Unicode)
  210.                 sNewOutput = left$(StrConv(baOutput(), vbUnicode), lBytesRead)
  211.             End If
  212.  
  213.             GetCommandOutput = GetCommandOutput & sNewOutput
  214.  
  215.             ' If you are executing an application that outputs data during a long time,
  216.             ' and don't want to lock up your application, it might be a better idea to
  217.             ' wrap this code in a class module in an ActiveX EXE and execute it asynchronously.
  218.             ' Then you can raise an event here each time more data is available.
  219.             'RaiseEvent OutputAvailabele(sNewOutput)
  220.         Loop
  221.  
  222.         ' When the process terminates successfully, Err.LastDllError will be
  223.         ' ERROR_BROKEN_PIPE (109). Other values indicates an error.
  224.  
  225.         Call CloseHandle(pi.hProcess)
  226.     Else
  227.         GetCommandOutput = "Failed to create process, check the path of the command line."
  228.     End If
  229.  
  230.     ' clean up
  231.     Call CloseHandle(hPipeRead)
  232.     If hPipeWrite1 Then
  233.         Call CloseHandle(hPipeWrite1)
  234.     End If
  235.     If hPipeWrite2 Then
  236.         Call CloseHandle(hPipeWrite2)
  237.     End If
  238. End Function
  239.  
Mar 21 '14 #8
NeoPa
32,556 Expert Mod 16PB
At 238 lines I think I'll take your word for it ;-)

@Sophanna.
I would give that code a try and let us know how you get on. I'm not sure exactly how you'd use it in your project but I would expect it to be easy to determine (as no instructions have been included with it). If you struggle I'm sure Hennepin will be happy to point you in the right direction if you ask them nicely.
Mar 22 '14 #9
sophannaly
67 64KB
Hi Hennepin,

Thanks your for your code but I got stuck on how to use this code. Is it right to call this function like this:
Expand|Select|Wrap|Line Numbers
  1. FileName = CurrentProject.Path & "\Request_Budget_Expenditure\Request_Budget_Expenditure_run.bat"
  2.  
  3.             Error_Code = GetCommandOutput(FileName)
  4.             MsgBox Error_Code
Error_Code is String type. and your code I Save it as module. I didn't see it calls bat file to run.

Best regard,
Sophanna
Mar 23 '14 #10
In my project I am just reading the dump of license status from an executable. If it fails I have an empty string. So i know it failed.

I am assuming in your case the bat file does not return anything. So if it fails you need to have the std error returned so the optional blnStdErr needs to be true.

Expand|Select|Wrap|Line Numbers
  1. FileName = CurrentProject.Path & "\Request_Budget_Expenditure\Request_Budget_Expenditure_run.bat"
  2. Error_Code = GetCommandOutput(sCommandLine:=FileName, blnStdErr:=True)
  3. MsgBox Error_Code
I tested this with a simple bat file that was bad.
Expand|Select|Wrap|Line Numbers
  1.     Debug.Print "----bad---"
  2.     s = GetCommandOutput(sCommandLine:="c:\mystuff\bad.bat", blnStdErr:=False)    
  3.     Debug.Print s
  4.     s = GetCommandOutput(sCommandLine:="c:\mystuff\bad.bat", blnStdErr:=True) 'dir C:\MyStuf\*.pdf /b
  5.     Debug.Print "---bad-with stderr---"
  6.     Debug.Print s 
  7.  
This is the output. It has the error in the second line of return string.
Expand|Select|Wrap|Line Numbers
  1. ----bad---
  2.  
  3. C:\MyStuff\acdata>dir C:\MyStuf\*.pdf /b 
  4.  
  5. ---bad-with stderr---
  6.  
  7. C:\MyStuff\acdata>dir C:\MyStuf\*.pdf /b 
  8. The system cannot find the file specified.
  9.  
Mar 24 '14 #11
sophannaly
67 64KB
Hi Hennepin,
I solved my problem by doing this update with ETL job. Anyway, thanks you so much for your reply and help. I will test it next time.

Best regards,
Sophanna
Mar 25 '14 #12

Sign in to post your reply or Sign up for a free account.

Similar topics

26
by: Michel Rouzic | last post by:
I have a binary file used to store the values of variables in order to use them again. I easily know whether the file exists or not, but the problem is, in case the program has been earlier...
2
by: PJ Olson | last post by:
I have an app that allows only one instance to run at a time. I have a file extension associated with this app and would like to pass a running instance the file name if a user double-clicks the...
0
by: Lokkju | last post by:
I am pretty much lost here - I am trying to create a managed c++ wrapper for this dll, so that I can use it from c#/vb.net, however, it does not conform to any standard style of coding I have seen....
13
by: MLH | last post by:
I have a batch file named GetConf.bat. It contains a line like this: ipconfig /all >c:\MyAppDir\IPdata.txt I believe I could run the line with something like ShellWait by Terry Kreft. Any...
3
by: Mike Dee | last post by:
Hi, I'm having an issue with the status bar in Mozilla and Netscape showing that it is still waiting on the page to load even after it is finished. This problem does NOT occur with IE. In...
0
by: Skywalker | last post by:
Hi. Can you please help me? I have problem;-) I am copying from one computer to another 50 MB large text file. For now is everything working. My question is, if I can in VBA for MS ACCESS show to...
4
waynetheengineer
by: waynetheengineer | last post by:
Hi everyone, I have a program that opens an Excel file, reads data from it, then closes the open workbook. But when I exit my program and go to edit that Excel file, it won't let me open it. ...
1
by: vishwa Ram | last post by:
Dear All, I am developing a Tool for XML Parsing/QC/View. In this I am using, Shell execute method to run a perl exe on dos (cmd). Shell (App.Path & "\Perl xmlQC.exe " inputFileName), vbHide ...
2
by: pesteszz | last post by:
I am trying to set up a program so that students can draw objects and move them around the 4 quadrants.
3
by: Rekha Kumaran | last post by:
Hello Friends... Im creating a Webpage. I pick values from Mysql and showed it in the HTML table. I want to create a SAVE button for storing the values which are shown in the HTML table. ...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
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,...
0
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...
0
Oralloy
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,...
0
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...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

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.