|
dear all
i would like to lock keyboard and mouse when my system is running by vb6, however i got some code here, but when i run, some error is there, any one can help me, urgent, thanks.
Option Explicit
Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Public hnexthookproc As Long
'Public Const HC_ACTION = 0
'Public Const WH_KEYBOARD = 2
Public Sub UnHookKBD()
If hnexthookproc <> 0 Then
UnhookWindowsHookEx hnexthookpro
hnexthookproc = 0
End If
End Sub
Public Function EnableKBDHook()
If hnexthookproc <> 0 Then
Exit Function
End If
hnexthookproc = SetWindowsHookEx(2, AddressOf MyKBHFunc, App.hInstance, 0)
If hnexthookproc <> 0 Then
EnableKBDHook = hnexthookproc
End If
End Function
Private Sub Command1_Click()
EnableKBDHook
End Sub
Private Sub Command2_Click()
UnHookKBD
End Sub
Public Function MyKBHFunc(ByVal iCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
MyKBHFunc = 0
If iCode < 0 Then
MyKBHFunc = CallNextHookEx(hnexthookproc, iCode, wParam, lParam)
Exit Function
End If
If wParam = vbKeyReturn Then
Debug.Print "haha"
Else
Call CallNextHookEx(hnexthookproc, iCode, wParam, lParam)
End If
End Function
Private Sub Form_Load()
EnableKBDHook
End Sub
Private Sub Form_Unload(Cancel As Integer)
CallUnHookKBD
End Sub
the problem is underline point.
|
|
|
|
|
Does the function reside in a DLL?
I are Troll
|
|
|
|
|
Can someone tell me why I would receive the following incode error: "
Expression is a value and therefore cannot be the target of an assignment"
Dim i, j As Integer
Dim xlapp As Excel.Application
Dim xlsht As Excel.Worksheet
Dim rng As Excel.Range
xlapp = New Excel._ExcelApplication
xlapp.DisplayAlerts = False
xlapp.Workbooks.Add()
xlsht = CType(xlapp.Sheets(1), Excel.Worksheet)
xlsht.Name = "BDIS Data Download"
Dim dc As DataColumn
Dim dr As DataRow
For i = 0 To gridContract.Columns.Count - 1
xlsht.Cells(1, i + 1) = gridContract(i).ColumnName
rng = CType(xlsht.Cells(1, i + 1), Excel.Range)
rng.Font.Bold = True
Next
For i = 0 To gridContract.rows.count - 1
For j = 0 To gridContract.Columns - 1
xlsht.Cells(i + 2, j + 1) = gridContract.rows(i)(j)
Next
Next
|
|
|
|
|
xlsht.Cells(1, i + 1) set a range object. you cannot assign it a value by using =
To set the range, the value you are trying to set, must be within the (...)
|
|
|
|
|
Simple. xlsht.Cells(...) returns a Range object, not a Value property.
|
|
|
|
|
Can't you just change
xlsht.Cells(1, i + 1) = gridContract(i).ColumnName
to
xlsht.Cells(1, i + 1).Value = gridContract(i).ColumnName
?
|
|
|
|
|
Thank you. I did make this correction.
|
|
|
|
|
SEND IT ON MY MAIL ID pollinedsac@gmail.com
|
|
|
|
|
|
rahuldsac wrote: WHERE WILL I GET VB.NET PROJECT
The magic fairies at the bottom of your garden, perhaps.
rahuldsac wrote: SEND IT ON MY MAIL ID pollinedsac@gmail.com
No, you did not use the magic word !!!
Steve Jowett
-------------------------
Real programmers don't comment their code. If it was hard to write, it should be hard to read.
|
|
|
|
|
YOU HAVE TO GO TO THE TOP OF A VERY TALL BUILDING THEN JUMP OFF IT, THE RESULTANT SPEED WILL OPEN A PORTAL TO ANOTHER WORLD WHERE YOUR PROJECT IS WAITING FOR YOU
|
|
|
|
|
Lolz.......
|
|
|
|
|
Guess what?! You got a fever, and the only prescription... is more cowbell VB Projects!
|
|
|
|
|
Hi rahuldsac.
Bad news: Nobody's able to send VB.NET project to you, but the good news is, CERN called justed a moment ago: they discovered a new elementary particle and they want to name it after you: the Moron.
"A moron is a special kind of elementary particle. The moron is classified as massless and with a spin of "dizzying". Morons are thought to normally travel at the speed of light, though it is possible to render them inert and motionless by passing then near cold beer. In String Theory, Morons are believed to be composed of Dubliner cheese and are believed to be the messenger particle, which represents unity (one unit) of the weak force Stupid."
|
|
|
|
|
Hi every one...
I have a Windows Form Application in VB.Net... in this Windows Form I have a textBox... with a "validate" button...
I need that when I input a user ID in the text box, the application go to the access and user table to see if the user is admin... if true print user name is admin else prints user name is not admin
the 2 tables design
tblUser (IDUser, UserName, FullName)
tblAcess (IDUser, AccessLevel [that can be admin or user] )
I just try to do it, but I receaved a message that the datareader is allready open and I cannot open other datareader.... see my code please:
<br />
Private Sub txtCardNum_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtCardNum.KeyPress<br />
If Char.IsNumber(e.KeyChar) Or e.KeyChar = Chr(13) Or e.KeyChar = Chr(8) Then<br />
e.Handled = False<br />
If e.KeyChar = Chr(13) Then<br />
If txtCardNum.Text = "" Then<br />
MsgBox("User ID can not be empty")<br />
Else<br />
Dim CardNum As String = txtCardNum.Text<br />
<br />
Dim SQL As String<br />
SQL = "SELECT U.CodUser, U.FullName FROM tblUser U INNER JOIN tblAccess A ON U.CodUser = A.CodUser WHERE A.AccessLevel = 'Admin' AND A.CodUser = @CodUser"<br />
Dim myCommand = New SqlCommand(SQL, myConnection)<br />
myCommand.Parameters.Add("@CodUser", SqlDbType.VarChar).Value = CardNum<br />
<br />
Dim SQL2 As String<br />
SQL2 = "SELECT CodUser, FullName FROM tblUser WHERE CodUser = @CodUser"<br />
Dim myCommand2 = New SqlCommand(SQL2, myConnection)<br />
myCommand2.Parameters.Add("@CodUser", SqlDbType.VarChar).Value = CardNum<br />
<br />
Dim reader As SqlDataReader = myCommand.ExecuteReader()<br />
Dim reader2 As SqlDataReader = myCommand2.ExecuteReader()<br />
'Caso existam linhas<br />
If reader.HasRows Then<br />
While reader.Read()<br />
lblFullName.Text = reader(1)<br />
lblLevel.Text = "Admin" <br />
txtCardNum.Text = "" <br />
End While<br />
reader.Close()<br />
Else<br />
Dim reader2 As SqlDataReader = myCommand2.ExecuteReader()<br />
lblNomeCliente.Text = reader2(1)<br />
lblLevel.Text = "Normal User"<br />
txtCardNum.Text = ""<br />
reader2.Close()<br />
End If<br />
End If<br />
End If<br />
Else<br />
e.Handled = True<br />
End If<br />
<br />
End Sub<br />
<br />
but when I try to execute and do the query I receave a error: "the data reader is allready open"
how can I solve it?
thanks
regards
PS
|
|
|
|
|
This was a pretty obvious error. You already open two readers, then you try and execute the second reader again. You have this line in your code twice:
Dim reader2 As SqlDataReader = myCommand2.ExecuteReader()
Remove the second occurance and you should be fine.
|
|
|
|
|
Hi!
Thanks for your reply...
I forgote to say something... When I execute this, if the user is Admin, it will be fine and I will see the user fullname, but if the user are not a admin, I cant continue...
I remove this line
Dim reader2 As SqlDataReader = myCommand2.ExecuteReader()
now I see this error: trying to read a unvaible data or somethig like this
System.InvalidOperationException was unhandled
Message="Tentativa de leitura inválida quando não estão presentes dados."
Source="System.Data"
StackTrace:
em System.Data.SqlClient.SqlDataReader.GetValue(Int32 i)
em System.Data.SqlClient.SqlDataReader.get_Item(Int32 i)
em SiSGym_Monitor.MainForm.txtCardNum_KeyPress(Object sender, KeyPressEventArgs e) em C:\Desenvolvimento\SiSGym Monitor\SiSGym Monitor\MainForm.vb:line 234
em System.Windows.Forms.Control.OnKeyPress(KeyPressEventArgs e)
em System.Windows.Forms.Control.ProcessKeyEventArgs(Message& m)
em System.Windows.Forms.Control.ProcessKeyMessage(Message& m)
em System.Windows.Forms.Control.WmKeyChar(Message& m)
em System.Windows.Forms.Control.WndProc(Message& m)
em System.Windows.Forms.TextBoxBase.WndProc(Message& m)
em System.Windows.Forms.TextBox.WndProc(Message& m)
em System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
em System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
em System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
em System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
em System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
em System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
em System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
em System.Windows.Forms.Application.Run(ApplicationContext context)
em Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
em Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
em Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
em SiSGym_Monitor.My.MyApplication.Main(String[] Args) em 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
em System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
em System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
em System.Runtime.Hosting.ManifestRunner.Run(Boolean checkAptModel)
em System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly()
em System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext, String[] activationCustomData)
em System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext)
em System.Activator.CreateInstance(ActivationContext activationContext)
em Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone()
em System.Threading.ThreadHelper.ThreadStart_Context(Object state)
em System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
em System.Threading.ThreadHelper.ThreadStart()
InnerException:
|
|
|
|
|
That error message says (through Google Translate) that you're trying retrieve a value that doesn't exist, or the record doesn't exist. Your code appears to be assuming that the SQL query returns records, when in fact, nothing gets returned. You don't chack this and just start retrieving values from a record that doesn't exist.
|
|
|
|
|
Hi
my problem is:
Hi have two tables (One with user info and other with level access [admin and regular user] )
How can I do a sql query in vb.net that can do that...
- Check if the user exists... then check if is admin:
-- If this statement is true, then print User FullName in lblFullName and YOU IS ADMIN in lblLevelAccess
Else
print user Fullname in lblFullName and YOU ARE NOT ADMIN in lblLevelAccess...
How can do it in vb.net
thanks for your help
|
|
|
|
|
Patrício dos Santos wrote: How can I do a sql query in vb.net that can do that...
- Check if the user exists... then check if is admin:
-- If this statement is true, then print User FullName in lblFullName and YOU IS ADMIN in lblLevelAccess
Else
By breaking the problem down into smaller and smaller parts...
Step 1:
Does the user exist?
Step 2:
If so, retrieve the account details.
Your code has these two steps globbed together into one monolithic method that really should be broken down into more methods that do very specific things.
I already told you what the problem is. You're not checking to see if your second reader actually returned any records. You're just assuming it did.
|
|
|
|
|
Step 1: Yes, we assume that the user exist.
step 2: I can execute this part of code...
Dim SQL As String<br />
SQL = "SELECT U.CodUser, U.FullName FROM tblUser U INNER JOIN tblAccess A ON U.CodUser = A.CodUser WHERE A.AccessLevel = 'Admin' AND A.CodUser = @CodUser"<br />
Dim myCommand = New SqlCommand(SQL, myConnection)<br />
myCommand.Parameters.Add("@CodUser", SqlDbType.VarChar).Value = CardNum<br />
<br />
Dim reader As SqlDataReader = myCommand.ExecuteReader()<br />
Dim reader2 As SqlDataReader = myCommand2.ExecuteReader()<br />
'Caso existam linhas<br />
If reader.HasRows Then<br />
While reader.Read()<br />
lblFullName.Text = reader(1)<br />
lblLevel.Text = "Admin"<br />
txtCardNum.Text = ""<br />
End While<br />
reader.Close()<br />
<br />
...<br />
if the user exists and is admin, I can print their full name, but is not admin but exists, I cannot do it
Else<br />
lblNomeCliente.Text = reader(1)<br />
lblLevel.Text = "Normal User"<br />
txtCardNum.Text = ""<br />
reader.Close()<br />
End If
I receave always the error that the datareader is closed, but if I close it (reader.close() ) I receave other error that there no data or something like this
PS: sorry my english, I am angolan
thanks
|
|
|
|
|
OK, I'll say this again. Your code is one monolithic glob that should be broken down into smaller parts, doing very specific things.
For instance, your top example executes two readers at the same time, but you haven't even checked to see if the user exists yet! Why execute the second record if you don't need it?? Execute the first query, check to see if you get ONE record back. If you don't, you need to handle those cases. If you get one record, do whatever you need to do with the data you have, then execute the second query and check to see if you get back more or less than one record. yada, yada, yada, ...
Patrício dos Santos wrote: PS: sorry my english, I am angolan
It's not your English that's the problem. It's the logic and the breaking down of the problem that's the problem.
|
|
|
|
|
Hi All,
I am having an issue at work where the .dat (fixed length) file generated for import into a client application (generated and e-mailed to customers in vb.net code using smtpclient) is being compressed into a .zip file. This is causing an issue at customer stores as they are unable to open the files and import. Any ideas why it is doing this? Is it outlook? Is it my vb application (unlikely because if you access the shared folder containing the file before sending it is not compressed) or is it the server? I really need to ghet this fixed as the phone is ringing off the hook and I cant find any helpful articles anywhere.
thanks guys,
|
|
|
|
|
I think it will be your outlook.
There are various options somewhere. There are also ones that resize images if you attach pictures.
|
|
|
|
|
Na, It's something on the server. We used another mail smtp client and it worked fine. So now where to look on the server is the question?
|
|
|
|
|