|
Apologies for the shouting but this is important.
When answering a question please:
- Read the question carefully
- Understand that English isn't everyone's first language so be lenient of bad spelling and grammar
- If a question is poorly phrased then either ask for clarification, ignore it, or mark it down. Insults are not welcome
- If the question is inappropriate then click the 'vote to remove message' button
Insults, slap-downs and sarcasm aren't welcome. Let's work to help developers, not make them feel stupid.
cheers,
Chris Maunder
The Code Project Co-founder
Microsoft C++ MVP
|
|
|
|
|
For those new to message boards please try to follow a few simple rules when posting your question.- Choose the correct forum for your message. Posting a VB.NET question in the C++ forum will end in tears.
- Be specific! Don't ask "can someone send me the code to create an application that does 'X'. Pinpoint exactly what it is you need help with.
- Keep the subject line brief, but descriptive. eg "File Serialization problem"
- Keep the question as brief as possible. If you have to include code, include the smallest snippet of code you can.
- Be careful when including code that you haven't made a typo. Typing mistakes can become the focal point instead of the actual question you asked.
- Do not remove or empty a message if others have replied. Keep the thread intact and available for others to search and read. If your problem was answered then edit your message and add "[Solved]" to the subject line of the original post, and cast an approval vote to the one or several answers that really helped you.
- If you are posting source code with your question, place it inside <pre></pre> tags. We advise you also check the "Encode "<" (and other HTML) characters when pasting" checkbox before pasting anything inside the PRE block, and make sure "Use HTML in this post" check box is checked.
- Be courteous and DON'T SHOUT. Everyone here helps because they enjoy helping others, not because it's their job.
- Please do not post links to your question into an unrelated forum such as the lounge. It will be deleted. Likewise, do not post the same question in more than one forum.
- Do not be abusive, offensive, inappropriate or harass anyone on the boards. Doing so will get you kicked off and banned. Play nice.
- If you have a school or university assignment, assume that your teacher or lecturer is also reading these forums.
- No advertising or soliciting.
- We reserve the right to move your posts to a more appropriate forum or to delete anything deemed inappropriate or illegal.
cheers,
Chris Maunder
The Code Project Co-founder
Microsoft C++ MVP
|
|
|
|
|
Hello,
I want to send a message/test to a other windows.
It should save me many time in putting me many time
strings/textes in MS Project, Outlook, ... ...
Therefore i want to use the Windwos API in VB.net.
I tried it in this way, but it doesn't work.
I get the windows handle, but the text isn't set at notepad or in a other window.
Private Sub tmr_Worktimer_Tick(sender As Object, e As EventArgs) Handles tmr_Worktimer.Tick
If IsKeyPressed(Keys.VK_SHIFT) Then
Dim aPoint As New POINTAPI
GetCursorPos(aPoint)
Dim hWnd As IntPtr = WindowFromPoint(aPoint.x, aPoint.y)
SetForegroundWindow(hWnd)
SetWindowTextUnicode(hWnd, WM_SETTEXT, IntPtr.Zero, "Test")
End If
End Sub
My API Calls are:
Public Structure Keys
Const VK_BACK As Short = &H8
Const VK_TAB As Short = &H9
Const VK_RETURN As Short = &HD
Const VK_SHIFT As Short = &H10
Const VK_CONTROL As Short = &H11
Const VK_MENU As Short = &H12
Const VK_CAPITAL As Short = &H14
Const VK_ESCAPE As Short = &H1B
Const VK_SPACE As Short = &H20
Const VK_PRIOR As Short = &H21
Const VK_NEXT As Short = &H22
End Structure
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)>
Public Function GetAsyncKeyState(ByVal vKey As Int32) As Short
End Function
Public Function IsKeyPressed(ByVal KeyToCheck As Short) As Boolean
Dim res As Short
res = GetAsyncKeyState(KeyToCheck)
If res < 0 Then
IsKeyPressed = True
Else
IsKeyPressed = False
End If
End Function
<System.Runtime.InteropServices.StructLayout(Runtime.InteropServices.LayoutKind.Sequential)>
Public Structure POINTAPI
Dim x As Integer
Dim y As Integer
End Structure
<DllImport("user32.dll", ExactSpelling:=True, SetLastError:=True)>
Public Function GetCursorPos(ByRef lpPoint As POINTAPI) As <MarshalAs(UnmanagedType.Bool)> Boolean
End Function
<DllImport("user32.dll")>
Public Function WindowFromPoint(xPoint As Integer, yPoint As Integer) As IntPtr
End Function
<DllImport("user32.dll")>
Public Function SetForegroundWindow(hWnd As IntPtr) As Boolean
End Function
Friend Const WM_SETTEXT As Integer = 12
<DllImport("user32.dll", EntryPoint:="SendMessageW", CharSet:=CharSet.Unicode)>
Public Function SetWindowTextUnicode(ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As IntPtr, ByVal lParam As String) As IntPtr
End Function
Any ideas? Is there a other way to send the string/text?
|
|
|
|
|
You need to use the debugger to see which of those API calls is failing. As it stands your code has no idea whether anything works.
|
|
|
|
|
The problem is, it didn't fail.
So i ask, if i use the right api call.
Or is there a better way to copy a string to a other textbox on a foreight form/app, then the "SendMessageW" API call?
|
|
|
|
|
Seek51 wrote: The problem is, it didn't fail. That is not what you said in your original question. So you need to be much more specific about the actual problem you have.
|
|
|
|
|
Seek51 wrote: The problem is, it didn't fail.
How exactly do you know that? Did you run it in the debugger?
Otherwise I don't see an exception handler.
And you are not looking at return values. For example SetForegroundWindow() which returns a boolean. And that value tells you whether it worked or not.
|
|
|
|
|
Myself that certainly does not look to me like that code would work.
Best I can see you are perhaps sending text to the desktop?
In other words the Windows UI is not the same as the processes that run.
When I googled for this solutions the Microsoft code I found suggests exactly what I would expect the process to be.
How to: start an Application and send it Keystrokes - Visual Basic | Microsoft Learn[^]
I suppose it might be possible to find an app using the UI, but sending key presses to it will still require the proc id.
|
|
|
|
|
|
As most of the comments suggest above, use a debugger in your code. You have a lot of else statements that will override a normal error, which is why you get no errors but also no warnings/comments in your log file...
|
|
|
|
|
Hello everyone,
I have a case with vlc on my ubuntu container. Indeed, my c# method :
<pre lang="C#">if (File.Exists(video.Path))
{
using (var libVLC = new LibVLC(enableDebugLogs: true))
{
this.logger.LogInformation($"ImageDetectionWorker.StartFramesPredictionVLC : VLC lib initialized")
if (Directory.Exists("/shared-volume/vlc" == false))
{
Directory.CreateDirectory("/shared-volume/vlc")
}
libVLC.SetLogFile($"/shared-volume/vlc/vlc.log";)
var absoluteVideoPath = new FileInfo(video.Path.FullName)
using (var media = new Media(libVLC, absoluteVideoPath, options: "--no-audio --no-xlib --no-sout-audio"))
{
this.logger.LogInformation($"ImageDetectionWorker.StartFramesPredictionVLC : VLC media initialized")
using (var mediaPlayer = new MediaPlayer(media))
{
this.logger.LogInformation($"ImageDetectionWorker.StartFramesPredictionVLC : VLC media player initialized")
mediaPlayer.ToggleMute()
Throw this logs in my container:
info: EigenVectors.PredictionWrite.Api.Workers.ImageDetectionWorker[0] ImageDetectionWorker.StartFramesPredictionVLC : Start to initialize VLC core info: EigenVectors.PredictionWrite.Api.Workers.ImageDetectionWorker[0] ImageDetectionWorker.StartFramesPredictionVLC : VLC core initialized [00007f897c0027e0] main libvlc debug: VLC media player - 3.0.20 Vetinari [00007f897c0027e0] main libvlc debug: Copyright © 1996-2023 the VideoLAN team [00007f897c0027e0] main libvlc debug: revision 3.0.20-0-g6f0d0ab126b [00007f897c0027e0] main libvlc debug: configured with ./configure '--build=x86_64-linux-gnu' '--prefix=/usr' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--disable-option-checking' '--disable-silent-rules' '--libdir=${prefix}/lib/x86_64-linux-gnu' '--runstatedir=/run' '--disable-maintainer-mode' '--disable-dependency-tracking' '--disable-debug' '--config-cache' '--disable-update-check' '--enable-fast-install' '--docdir=/usr/share/doc/vlc' '--with-binary-version=3.0.20-0+deb11u1' '--enable-a52' '--enable-aa' '--enable-aribsub' '--enable-avahi' '--enable-bluray' '--enable-caca' '--enable-chromaprint' '--enable-chromecast' '--enable-dav1d' '--enable-dbus' '--enable-dca' '--enable-dvbpsi' '--enable-dvdnav' '--enable-faad' '--enable-flac' '--enable-fluidsynth' '--enable-freetype' '--enable-fribidi' '--enable-gles2' '--enable-gnutls' '--enable-harfbuzz' '--enable-jack' '--enable-kate' '--enable-libass' '--enable-libmpeg2' '--enable-libxml2' '--enable-lirc' '--enable-mad' '--enable-matroska' '--enable-mod' '--enable-mpc' '--enable-mpg123' '--enable-mtp' '--enable-ncurses' '--enable-notify' '--enable-ogg' '--enable-opus' '--enable-pulse' '--enable-qt' '--enable-realrtsp' '--enable-samplerate' '--enable-sdl-image' '--enable-sftp' '--enable-shine' '--enable-shout' '--enable-skins2' '--enable-soxr' '--enable-spatialaudio' '--enable-speex' '--enable-svg' '--enable-svgdec' '--enable-taglib' '--enable-theora' '--enable-twolame' '--enable-upnp' '--enable-vdpau' '--enable-vnc' '--enable-vorbis' '--enable-x264' '--enable-x265' '--enable-zvbi' '--with-kde-solid=/usr/share/solid/actions/' '--disable-aom' '--disable-crystalhd' '--disable-d3d11va' '--disable-decklink' '--disable-directx' '--disable-dsm' '--disable-dxva2' '--disable-fdkaac' '--disable-fluidlite' '--disable-freerdp' '--disable-goom' '--disable-gst-decode' '--disable-libtar' '--disable-live555' '--disable-macosx' '--disable-macosx-avfoundation' '--disable-macosx-qtkit' '--disable-mfx' '--disable-microdns' '--disable-opencv' '--disable-projectm' '--disable-schroedinger' '--disable-sparkle' '--disable-srt' '--disable-telx' '--disable-vpx' '--disable-vsxu' '--disable-wasapi' '--enable-alsa' '--enable-dc1394' '--enable-dv1394' '--enable-libplacebo' '--enable-linsys' '--enable-nfs' '--enable-udev' '--enable-v4l2' '--enable-wayland' '--enable-libva' '--enable-vcd' '--enable-smbclient' '--disable-oss' '--enable-mmx' '--enable-sse' '--disable-neon' '--disable-altivec' '--disable-omxil' 'build_alias=x86_64-linux-gnu' 'CFLAGS=-g -O2 -ffile-prefix-map=/build/reproducible-path/vlc-3.0.20=. -fstack-protector-strong -Wformat -Werror=format-security ' 'LDFLAGS=-Wl,-z,relro -Wl,-z,now' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -ffile-prefix-map=/build/reproducible-path/vlc-3.0.20=. -fstack-protector-strong -Wformat -Werror=format-security ' 'OBJCFLAGS=-g -O2 -ffile-prefix-map=/build/reproducible-path/vlc-3.0.20=. -fstack-protector-strong -Wformat -Werror=format-security' [00007f897c0027e0] main libvlc debug: searching plug-in modules [00007f897c0027e0] main libvlc debug: loading plugins cache file /usr/lib/x86_64-linux-gnu/vlc/plugins/plugins.dat [00007f897c0027e0] main libvlc debug: recursively browsing `/usr/lib/x86_64-linux-gnu/vlc/plugins' [00007f897c0027e0] main libvlc debug: plug-ins loaded: 519 modules [00007f897c001ad0] main logger debug: looking for logger module matching "any": 4 candidates [00007f897c001ad0] main logger debug: using logger module "console" [00007f897c0027e0] main libvlc debug: translation test: code is "C" [00007f8984270880] main keystore debug: looking for keystore module matching "memory": 4 candidates [00007f8984270880] main keystore debug: using keystore module "memory" [00007f897c0027e0] main libvlc debug: CPU has capabilities MMX MMXEXT SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AVX AVX2 FPU info: EigenVectors.PredictionWrite.Api.Workers.ImageDetectionWorker[0] ImageDetectionWorker.StartFramesPredictionVLC : VLC lib initialized info: EigenVectors.PredictionWrite.Api.Workers.ImageDetectionWorker[0] ImageDetectionWorker.StartFramesPredictionVLC : VLC media initialized info: EigenVectors.PredictionWrite.Api.Workers.ImageDetectionWorker[0] ImageDetectionWorker.StartFramesPredictionVLC : VLC media player initialized info: EigenVectors.PredictionWrite.Api.Workers.ImageDetectionWorker[0] ImageDetectionWorker.StartFramesPredictionVLC : True ALSA lib confmisc.c:767:(parse_card) cannot find card '0' ALSA lib conf.c:4745:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
My Dockerfile :
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env
WORKDIR /app
EXPOSE 80
COPY . .
RUN dotnet restore MyProject.csproj
RUN dotnet publish MyProject.csproj -c Release -o out --no-restore
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY --from=build-env /app/out .
RUN apt-get update && apt-get install -y vlc && apt-get install libvlc-dev
ENV LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH
ENTRYPOINT ["dotnet", "MyProject.dll"]
I've tried a lot of package to install on the container without any success
|
|
|
|
|
Quote: ALSA lib confmisc.c:767:(parse_card) cannot find card '0' ALSA lib conf.c:4745:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory ALSA lib confmisc.c:392:(snd_func_concat) error
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
Lets start off with a little honesty - I am unsure of exactly what I am asking, but I am sure that someone can help.
So I currently have Visual Studio 17.8 installed. I predominantly work in VB.NET. I have some older code downloaded from Github, that works just fine (as binary) when it was put together say 10 or more years ago. The crux of the problem is that you (and by you, I mean me) cannot in some cases simply drop it into VS 17.8 without several errors.
Therefore, the naïve question is - can anyone point to a good source of information that would guide me on how to "upgrade" older code to eliminate errors in compiling with the current versions of VS and .NET?
THanks.
Pound to fit, paint to match
|
|
|
|
|
I'm interested ... what is older VB.Net Code and what is newer Code ?
I would say that your question isn't to answer without more and specific Info ...
|
|
|
|
|
You make a copy of the project, and try and compile it; then you can catastrophize.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
lewist57 wrote: cannot in some cases simply drop it into VS 17.8 without several errors
Without the code and the specific errors, its impossible to tell you what the problem is.
At a guess, are you trying to open a project that targets a version of .NET / .NET Framework for which you haven't installed the relevant VS targeting pack?
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
It all depends on what the errors are. So you need to post a properly detailed question.
|
|
|
|
|
Ok, my previous post was a great example of how not to describe what I am looking for, mea culpa.
To give a more concrete example: Fast Colored Textbox is available here on CodeProject, as well as Github. It was posted in 2014, and has a target framework of .NET Framework 3.5. With VS 2022 17.8.2 (as of yesterday), the default target framework is .NET 8.0.
To clarify: evidently, even though I am sure that Microsoft works very hard to keep backward compatibility, the process of upgrading the program to .NET 8.0 is not trouble free. When you open the original files and start building, VS 2022 starts with a "One-way upgrade" conversion, and it says it successfully migrated. When you build the project, you get a dozen errors about "invalid RESX file".
Now I have not dug into the errors per se, but the naïve question is what is the root cause of these errors? Is it:
a) Just a matter of ensuring all supporting files are in a location that the compiler can work with, or
b) You can't count on the "one way upgrade" to do everything for you, or
c) There is code from 2008 - 2014 .NET 3.5 that is not compatible with .NET 8.0, or
d) all of the above, or something else
Of the three, it is item C that I am mainly concerned with.
Hope this makes more sense than the original post. Thanks to all for input received to date.
BTW: I mentioned that I work mainly in VB.NET as a nice way of saying I do not do programming for a living.
Pound to fit, paint to match
modified 1-Dec-23 9:47am.
|
|
|
|
|
Well, apart from saying you got "invalid RESX file"., we still have no idea what the problem is. As it is the .resx file is an XMLschema attached to the project properties, so you could try deleting it and let Visual Studio try to rebuild it. Of course, that assumes you have safely kept the original.
|
|
|
|
|
Thanks I will give that a try.
To distill things down further: is it possible that code written 10+ years ago will have problems building under .NET 8.0 and will require re-writing the code to build successfully? Or is the one way upgrade system good at catching potential problems and resolving the changes to the code?
Pound to fit, paint to match
|
|
|
|
|
That is impossible to answer; the only way to find out is to try it. Make sure that any generated files are removed from the project first, so you only have the .sln, .csproj/.vbproj, and source files that you created. Then once you run the build you should quickly be able to see what needs manual intervention.
|
|
|
|
|
Agree with this 100%. The longer and time consuming method but probably the best and safest method is to clean the project and just run the solution, then start adding items - dll's, files etc one by one and compile. If it loads, all fine, if it fails, look for a solution to why it failed. This way you will save yourself hours of debugging by pinpointing the actual cause of failure, once remedied, move to the next.
|
|
|
|
|
I guess you and I have probably been through this process once or twice. I have a Powershell script that purges all the object files from my projects when upgrading Visual Studio.
|
|
|
|
|
Indeed, bump your head once and learn from it, bump it twice and there is no medicine for the pain... 
|
|
|
|
|
The solution and project file formats for older versions of Visual Studio changed dramatically over the years. You opening an old .NET 3.5 project in a newer Visual Studio requires conversion of the project files (*.vbproj) and related to the updated formats.
This has nothing to do with .NET 8.0.
If you got the code from GitHub - PavelTorgashov/FastColoredTextBox: Fast Colored TextBox for Syntax Highlighting. The text editor component for .NET.[^], that solution has two projects, that target two different .NET Framework versions. You need to have both framework versions installed, .NET Framework 2.0 and .NET Framework 3.5. Just Google for ".NET Framework download" to get them.
|
|
|
|
|