Click here to Skip to main content
15,893,337 members
Home / Discussions / C#
   

C#

 
Questionconvert date and time Pin
Yustme25-Sep-06 1:30
Yustme25-Sep-06 1:30 
AnswerRe: convert date and time Pin
User 665825-Sep-06 1:36
User 665825-Sep-06 1:36 
GeneralRe: convert date and time Pin
Yustme25-Sep-06 1:43
Yustme25-Sep-06 1:43 
AnswerRe: convert date and time Pin
eggsovereasy25-Sep-06 3:29
eggsovereasy25-Sep-06 3:29 
GeneralRe: convert date and time Pin
User 665825-Sep-06 4:39
User 665825-Sep-06 4:39 
Questiontab control Pin
Parshant Verma25-Sep-06 0:45
Parshant Verma25-Sep-06 0:45 
QuestionC# - System.Windows.Automation with Java, Java Access Bridge with WindowsAccessBridge.dll Pin
gagy37925-Sep-06 0:31
gagy37925-Sep-06 0:31 
AnswerRe: C# - System.Windows.Automation with Java, Java Access Bridge with WindowsAccessBridge.dll Pin
John5025-Jul-15 20:31
John5025-Jul-15 20:31 
Hi Greg,
Please use below code
using System.Runtime.InteropServices;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Diagnostics;
using System.Windows.Forms;

namespace JabApiLib.JavaAccessBridge
{
public static class JabHelpers
{
public class AccessibleTreeItem
{
public String name; // the AccessibleName of the object
public String description; // the AccessibleDescription of the object
public String role; // localized AccesibleRole string
public String role_en_US; // AccesibleRole string in the en_US locale
public String states; // localized AccesibleStateSet string (comma separated)
public String states_en_US; // AccesibleStateSet string in the en_US locale (comma separated)
public Int32 indexInParent; // index of object in parent
public Int32 childrenCount; // # of children, if any
public Int32 x; // screen coords in pixel
public Int32 y; // "
public Int32 width; // pixel width of object
public Int32 height; // pixel height of object
public Boolean accessibleComponent; // flags for various additional
public Boolean accessibleAction; // Java Accessibility interfaces
public Boolean accessibleSelection; // FALSE if this object doesn't
public Boolean accessibleText; // implement the additional interface
public Boolean accessibleInterfaces;
public string textValue;
public string m_msgStr;

public List<accessibletreeitem> children;


public AccessibleTreeItem()
{
children = new List<accessibletreeitem>();
}

public AccessibleTreeItem(AccessibleContextInfo accessibleContextInfo)
: this()
{
this.name = accessibleContextInfo.name; // the AccessibleName of the object
this.description = accessibleContextInfo.description; // the AccessibleDescription of the object
this.role = accessibleContextInfo.role; // localized AccesibleRole string
this.role_en_US = accessibleContextInfo.role_en_US; // AccesibleRole string in the en_US locale
this.states = accessibleContextInfo.states; // localized AccesibleStateSet string (comma separated)
this.states_en_US = accessibleContextInfo.states_en_US; // AccesibleStateSet string in the en_US locale (comma separated)
this.indexInParent = accessibleContextInfo.indexInParent; // index of object in parent
this.childrenCount = accessibleContextInfo.childrenCount; // # of children, if any
this.x = accessibleContextInfo.x; // screen coords in pixel
this.y = accessibleContextInfo.y; // "
this.width = accessibleContextInfo.width; // pixel width of object
this.height = accessibleContextInfo.height; // pixel height of object
this.accessibleComponent = accessibleContextInfo.accessibleComponent; // flags for various additional
this.accessibleAction = accessibleContextInfo.accessibleAction; // Java Accessibility interfaces
this.accessibleSelection = accessibleContextInfo.accessibleSelection; // FALSE if this object doesn't
this.accessibleText = accessibleContextInfo.accessibleText; // implement the additional interface
this.accessibleInterfaces = accessibleContextInfo.accessibleInterfaces;
}

public Rectangle Bounds
{
get
{
return new Rectangle(this.x, this.y, this.width, this.height);
}
}

public Int32 SquarePixels
{
get { return this.x * this.y; }
}
}


internal class ItemComparer : IComparer<accessibletreeitem>
{
#region IComparer<ireader> Members

public int Compare(AccessibleTreeItem x, AccessibleTreeItem y)
{
if (x.SquarePixels < y.SquarePixels)
{
return 1;
}
else if (x.SquarePixels > y.SquarePixels)
{
return -1;
}
else
{
return 0;
}
}

#endregion
}

private static List<accessibletreeitem> screenContents = new List<accessibletreeitem>();
public static string screenContentsString = string.Empty;
public static int g_vmId;
public static IntPtr g_acPtr;

public static AccessibleTreeItem GetComponentTree(IntPtr hWnd, out Int32 vmID)
{
screenContents.Clear();
screenContentsString = string.Empty;

AccessibleTreeItem accessibleTreeItem = new AccessibleTreeItem();
vmID = 0;
//String temp = "2B0586";
//hWnd = Marshal.StringToHGlobalAuto(temp);

//bool result = JabApi.initializeAccessBridge();
IntPtr versionInfo;

IntPtr acPtr1 = Marshal.AllocHGlobal(Marshal.SizeOf(new AccessibleContextInfo()));
bool result1 = JabApi.getVersionInfo(34, acPtr1);

if (JabApi.isJavaWindow(hWnd) == 1)
{
MessageBox.Show("Java Handle found");
JabApi.MouseClickedDelegate mcd = new JabApi.MouseClickedDelegate(HandleMouseClicked);
JabApi.setMouseClickedFP(mcd);

JabApi.FocusLostDelegate mcd1 = new JabApi.FocusLostDelegate(FocusLostDelegateEvent);
JabApi.setFocusLostFP(mcd1);

JabApi.FocusGainedDelegate mcd2 = new JabApi.FocusGainedDelegate(FocusGainedDelegateEvent);
JabApi.setFocusGainedFP(mcd2);

JabApi.PopupMenuWillBecomeInvisibleDelegate mcd3 = new JabApi.PopupMenuWillBecomeInvisibleDelegate(PopupMenuWillBecomeInvisibleDelegateEvent);
JabApi.setPopupMenuWillBecomeInvisibleFP(mcd3);

JabApi.PopupMenuWillBecomeVisibleDelegate mcd4 = new JabApi.PopupMenuWillBecomeVisibleDelegate(PopupMenuWillBecomeVisibleDelegateEvent);
JabApi.setPopupMenuWillBecomeVisibleFP(mcd4);

JabApi.PropertyActiveDescendentChangeDelegate mcd5 = new JabApi.PropertyActiveDescendentChangeDelegate(PropertyActiveDescendentChangeDelegateEvent);
JabApi.setPropertyActiveDescendentChangeFP(mcd5);

JabApi.PropertySelectionChangeDelegate mcd6 = new JabApi.PropertySelectionChangeDelegate(PropertySelectionChangeDelegateEvent);
JabApi.setPropertySelectionChangeFP(mcd6);

JabApi.PropertyStateChangeDelegate mcd7 = new JabApi.PropertyStateChangeDelegate(PropertyStateChangeDelegateEvent);
JabApi.setPropertyStateChangeFP(mcd7);
JabApi.PropertyTableModelChangeDelegate md8 = new JabApi.PropertyTableModelChangeDelegate(PropertyTableModelChangeDelegateEvent);
JabApi.setPropertyTableModelChangeFP(md8);

JabApi.PropertyValueChangeDelegate md9 = new JabApi.PropertyValueChangeDelegate(PropertyValueChangeDelegateEvent);
JabApi.setPropertyValueChangeFP(md9);

unsafe
{
IntPtr acPtr;

try
{
MessageBox.Show("calling getAccessibleContextFromHWND");
if (JabApi.getAccessibleContextFromHWND(hWnd, out vmID, out acPtr))
{
g_vmId = vmID;
g_acPtr = acPtr;
AccessibleContextInfo ac = new AccessibleContextInfo();
accessibleTreeItem = GetAccessibleContextInfo(vmID, acPtr, out ac, null, 0, string.Empty); // RECURSION SEED
MessageBox.Show("getAccessibleContextFromHWND");
return accessibleTreeItem;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
else
{
MessageBox.Show("No Java Handle");
//m_msgStr = "Window handle is not for Java";
//Debug.Print(m_msgStr);
}

return null;
}


public static AccessibleContextInfo GetAccessibleContextInfo(Int32 vmID, IntPtr ac)
{
AccessibleContextInfo aci = new AccessibleContextInfo(); //This will be the info that we return.

// Allocate global memory space for the size of AccessibleContextInfo and store the address in acPtr
IntPtr acPtr = Marshal.AllocHGlobal(Marshal.SizeOf(new AccessibleContextInfo()));
try
{
//Convert the pointer to an actual object.
Marshal.StructureToPtr(new AccessibleContextInfo(), acPtr, true);
//getAccessibleContextInfo() returns true or false, depending on whether it succeeds.
if (JabApi.getAccessibleContextInfo(vmID, ac, acPtr))
{
aci = (AccessibleContextInfo)Marshal.PtrToStructure(acPtr, typeof(AccessibleContextInfo));
//Check that the info isn't null, and then return.
if (!ReferenceEquals(aci, null))
{
return aci;
}
}
}
catch
{
return new AccessibleContextInfo();
}
return new AccessibleContextInfo();
}

public static String Venkatesh(IntPtr hWnd, string stringToSearchAndClick)
{
int vmId;
IntPtr acPtr1;
AccessibleTreeItem accessibleTreeItem;

if (JabApi.getAccessibleContextFromHWND(hWnd, out vmId, out acPtr1))
{
AccessibleContextInfo ac = new AccessibleContextInfo();
accessibleTreeItem = GetItemsFromWindow(vmId, acPtr1, out ac, null, 0, string.Empty, stringToSearchAndClick); // RECURSION SEED
MessageBox.Show("getAccessibleContextFromHWND");
}

//AccessibleContextInfo ac = new AccessibleContextInfo();
//MessageBox.Show("Searching for " + text);
//GetItemsFromWindow(g_vmId, g_acPtr, out ac, null, 0, string.Empty); // RECURSION SEED
return "";
}



public static AccessibleTextItemsInfo GetAccessibleTextInfo(Int32 vmID, IntPtr ac)
{
//Reserve memory
IntPtr ati = Marshal.AllocHGlobal(Marshal.SizeOf(new AccessibleTextItemsInfo()));
//Call DLL.
JabApi.getAccessibleTextItems(vmID, ac, ati, 0);
//Creat object
AccessibleTextItemsInfo atInfo = (AccessibleTextItemsInfo)Marshal.PtrToStructure(ati, typeof(AccessibleTextItemsInfo));
//Free memory
if (ati != IntPtr.Zero)
{
Marshal.FreeHGlobal(ati);
}
return atInfo;
}

private static AccessibleTreeItem GetItemsFromWindow(Int32 vmID, IntPtr currentPtr, out AccessibleContextInfo currentContext, AccessibleTreeItem parentItem, int level, string lineage, string stringToSearchAndClick)
{
IntPtr acPtr = Marshal.AllocHGlobal(Marshal.SizeOf(new AccessibleContextInfo()));
try
{
//MessageBox.Show("In GetAccessibleContextInfo");
Marshal.StructureToPtr(new AccessibleContextInfo(), acPtr, true);
if (JabApi.getAccessibleContextInfo(vmID, currentPtr, acPtr))
{
currentContext = (AccessibleContextInfo)Marshal.PtrToStructure(acPtr, typeof(AccessibleContextInfo));

if (!ReferenceEquals(currentContext, null))
{
AccessibleTreeItem newItem = BuildAccessibleTree(currentContext, parentItem);

if (!ReferenceEquals(newItem, null))
{
string treeInfo = Repeat("\t", level) + currentContext.name;
//Checks to see if current object has any text items.
unsafe
{

if (currentContext.name == stringToSearchAndClick)
{
IntPtr actions;
Int32 failure1;

AccessibleActionsToDo actions_to_do;

int temp2 = Marshal.SizeOf(new AccessibleActions());
IntPtr accessible_action_ptr = Marshal.AllocHGlobal(temp2);
JabApi.getAccessibleActions(vmID, currentPtr, accessible_action_ptr);
AccessibleActions actions1 = (AccessibleActions)Marshal.PtrToStructure(accessible_action_ptr, typeof(AccessibleActions));

actions_to_do.actionsCount = actions1.actionsCount;
actions_to_do.actions = actions1.actionInfo;

int temp3 = Marshal.SizeOf(new AccessibleActionsToDo());
IntPtr accessible_action_ptr1 = Marshal.AllocHGlobal(temp3);
JabApi.MouseClickedDelegate mcd1 = new JabApi.MouseClickedDelegate(HandleMouseClicked);
int fp = 0;
Marshal.StructureToPtr(actions_to_do, accessible_action_ptr1, false);
JabApi.doAccessibleActions(vmID, currentPtr, accessible_action_ptr1, &failure1);
IntPtr Window_Handle = JabApi.getHWNDFromAccessibleContext(vmID, currentPtr);
}

if (currentContext.role == "table")
{
IntPtr tableInfoPtr = Marshal.AllocHGlobal(Marshal.SizeOf(new AccessibleTableInfo()));
Marshal.StructureToPtr(new AccessibleTableInfo(), tableInfoPtr, true);
if (JabApi.getAccessibleTableInfo(vmID, currentPtr, tableInfoPtr) == false)
{
MessageBox.Show("Failed...");
//appendToBuffer(buffer, bufsize, "\r\nERROR: GetAccessibleContextInfo failed ", bufsize);
}
else
{
AccessibleTableInfo tableInfo;
tableInfo = (AccessibleTableInfo)Marshal.PtrToStructure(tableInfoPtr, typeof(AccessibleTableInfo));

for (int i = 0; i < tableInfo.rowCount; i++)
{
for (int j = 0; j < tableInfo.columnCount; j++)
{
IntPtr tableCellInfoPtr = Marshal.AllocHGlobal(Marshal.SizeOf(new AccessibleTableCellInfo()));
Marshal.StructureToPtr(new AccessibleTableCellInfo(), tableCellInfoPtr, true);
if (JabApi.getAccessibleTableCellInfo(vmID, tableInfo.accessibleTable, i, j, tableCellInfoPtr) == false)
{
MessageBox.Show("Failed...");
}
else
{
JabApi.setPropertyValueChangeFP(PropertyValueChangeDelegateEvent);
AccessibleTableCellInfo tableCellInfo;
tableCellInfo = (AccessibleTableCellInfo)Marshal.PtrToStructure(tableCellInfoPtr, typeof(AccessibleTableCellInfo));

IntPtr cellACInfoPtr = Marshal.AllocHGlobal(Marshal.SizeOf(new AccessibleContextInfo()));
Marshal.StructureToPtr(new AccessibleContextInfo(), cellACInfoPtr, true);

if (JabApi.getAccessibleContextInfo(vmID, tableCellInfo.accessibleContext, cellACInfoPtr) == false)
{
MessageBox.Show("Failed");
}

AccessibleContextInfo cellACInfo;
cellACInfo = (AccessibleContextInfo)Marshal.PtrToStructure(cellACInfoPtr, typeof(AccessibleContextInfo));

bool retVal = false;
if (cellACInfo.name == "234")
{
PropertyTableModelChangePackage fp = new PropertyTableModelChangePackage();
fp.vmID = vmID;
fp.AccessibleContextSource = tableCellInfo.accessibleContext;
fp.oldValue = "";
fp.oldValue = "";
JabApi.setPropertyTableModelChangeFP(fp);
retVal = JabApi.setTextContents(vmID, tableCellInfo.accessibleContext, "99999");
MessageBox.Show(cellACInfo.name);
}
}
}
}
}
}
}

screenContentsString += treeInfo + Environment.NewLine;
Debug.Print(treeInfo);

//Start collecting children
int nextLevel = level + 1;
for (int i = 0; i < currentContext.childrenCount; i++)
{
string lineageInfo = Repeat("\t", level) + level.ToString() + " Child " + i.ToString() + " Lineage = {" + lineage + "}";
screenContentsString += lineageInfo + Environment.NewLine;
Debug.Print(lineageInfo);

string currentlineage;
if (lineage == string.Empty)
currentlineage = i.ToString();
else
currentlineage = lineage + ", " + i.ToString();

if (currentContext.role_en_US != "unknown" && currentContext.states_en_US.Contains("visible")) // Note the optomization here, I found this get me to an acceptable speed
{
AccessibleContextInfo childContext = new AccessibleContextInfo();
IntPtr childPtr = JabApi.getAccessibleChildFromContext(vmID, currentPtr, i);

GetItemsFromWindow(vmID, childPtr, out childContext, newItem, nextLevel, currentlineage, stringToSearchAndClick);

//TODO: Not sure when or where to release the java objects, the JVM will leak memory until released
//JabApi.releaseJavaObject(vmID, childPtr);
}
}
}
return newItem;
}
}
else
{
currentContext = new AccessibleContextInfo();
}
}
finally
{
if (acPtr != IntPtr.Zero)
Marshal.FreeHGlobal(acPtr);

//TODO: Not sure when or where to release the java objects, the JVM will leak memory until released
//JabApi.releaseJavaObject(vmID, currentPtr);
}

return null;
}

private static AccessibleTreeItem GetAccessibleContextInfo(Int32 vmID, IntPtr currentPtr, out AccessibleContextInfo currentContext, AccessibleTreeItem parentItem, int level, string lineage)
{
unsafe
{
// Allocate global memory space for the size of AccessibleContextInfo and store the address in acPtr
IntPtr acPtr = Marshal.AllocHGlobal(Marshal.SizeOf(new AccessibleContextInfo()));
try
{
//MessageBox.Show("In GetAccessibleContextInfo");
Marshal.StructureToPtr(new AccessibleContextInfo(), acPtr, true);
if (JabApi.getAccessibleContextInfo(vmID, currentPtr, acPtr))
{
currentContext = (AccessibleContextInfo)Marshal.PtrToStructure(acPtr, typeof(AccessibleContextInfo));

if (!ReferenceEquals(currentContext, null))
{
AccessibleTreeItem newItem = BuildAccessibleTree(currentContext, parentItem);

if (!ReferenceEquals(newItem, null))
{
//Checks to see if current object has any text items.
if (currentContext.accessibleText == true)
{
AccessibleTextItemsInfo textItem;
//Gets text items.
textItem = GetAccessibleTextInfo(vmID, currentPtr);
newItem.textValue = textItem.sentence;

string treeInfo = Repeat("\t", level) + currentContext.name + " = \"" + textItem.sentence + "\"";
screenContentsString += treeInfo + Environment.NewLine;
Debug.Print(treeInfo);
}
else
{
string treeInfo = Repeat("\t", level) + currentContext.name + " : " + currentContext.role;
if (currentContext.name.Contains("14.20.22"))
{
MessageBox.Show(currentContext.name + " : " + currentContext.role);
JabApi.setTextContents(vmID, currentPtr, "12.0.0");
}

if (currentContext.role == "text")
{
Debug.Print(treeInfo);
}

if (currentContext.role == "combo box")
{
IntPtr actions;
Int32 failure = 512 ;

AccessibleActionsToDo actions_to_do;

int temp2 = Marshal.SizeOf(new AccessibleActions());
IntPtr accessible_action_ptr = Marshal.AllocHGlobal(temp2);
JabApi.getAccessibleActions(vmID, currentPtr, accessible_action_ptr);
AccessibleActions actions1 = (AccessibleActions)Marshal.PtrToStructure(accessible_action_ptr, typeof(AccessibleActions));

actions_to_do.actionsCount = actions1.actionsCount;
actions_to_do.actions = actions1.actionInfo;

int temp3 = Marshal.SizeOf(new AccessibleActionsToDo());
IntPtr accessible_action_ptr1 = Marshal.AllocHGlobal(temp3);
JabApi.MouseClickedDelegate mcd1 = new JabApi.MouseClickedDelegate(HandleMouseClicked);
int fp = 0;
JabApi.setMouseClickedFP(null);
Marshal.StructureToPtr(actions_to_do, accessible_action_ptr1, false);
JabApi.doAccessibleActions(vmID, currentPtr, accessible_action_ptr1, &failure);
IntPtr Window_Handle = JabApi.getHWNDFromAccessibleContext(vmID, currentPtr);
}

screenContentsString += treeInfo + Environment.NewLine;
Debug.Print(treeInfo);
}


//Start collecting children
int nextLevel = level + 1;
for (int i = 0; i < currentContext.childrenCount; i++)
{
string lineageInfo = Repeat("\t", level) + level.ToString() + " Child " + i.ToString() + " Lineage = {" + lineage + "}";
screenContentsString += lineageInfo + Environment.NewLine;
Debug.Print(lineageInfo);

string currentlineage;
if (lineage == string.Empty)
currentlineage = i.ToString();
else
currentlineage = lineage + ", " + i.ToString();

if (currentContext.role_en_US != "unknown" && currentContext.states_en_US.Contains("visible")) // Note the optomization here, I found this get me to an acceptable speed
{
AccessibleContextInfo childContext = new AccessibleContextInfo();
IntPtr childPtr = JabApi.getAccessibleChildFromContext(vmID, currentPtr, i);

GetAccessibleContextInfo(vmID, childPtr, out childContext, newItem, nextLevel, currentlineage);

//TODO: Not sure when or where to release the java objects, the JVM will leak memory until released
//JabApi.releaseJavaObject(vmID, childPtr);
}

}
}

return newItem;
}
}
else
{
currentContext = new AccessibleContextInfo();
}
}
finally
{
if (acPtr != IntPtr.Zero)
Marshal.FreeHGlobal(acPtr);

//TODO: Not sure when or where to release the java objects, the JVM will leak memory until released
//JabApi.releaseJavaObject(vmID, currentPtr);
}
}
return null;
}

public static string Repeat(string s, int count)
{
var _s = new System.Text.StringBuilder().Insert(0, s, count).ToString();
return _s;
}


private static AccessibleTreeItem BuildAccessibleTree(AccessibleContextInfo acInfo, AccessibleTreeItem parentItem)
{
if (!ReferenceEquals(acInfo, null))
{
AccessibleTreeItem item = new AccessibleTreeItem(acInfo);
if (!ReferenceEquals(parentItem, null))
{
screenContents.Add(item);
parentItem.children.Add(item);
}
return item;
}
return null;
}


static void HandleMouseClicked(System.Int32 vmID, IntPtr jevent, IntPtr ac)
{
JabApi.releaseJavaObject(vmID, ac);
JabApi.releaseJavaObject(vmID, jevent);
}

static void FocusLostDelegateEvent(System.Int32 vmID, IntPtr jevent, IntPtr ac)
{
JabApi.releaseJavaObject(vmID, ac);
JabApi.releaseJavaObject(vmID, jevent);
}

static void FocusGainedDelegateEvent(System.Int32 vmID, IntPtr jevent, IntPtr ac)
{
JabApi.releaseJavaObject(vmID, ac);
JabApi.releaseJavaObject(vmID, jevent);
}

static void PopupMenuWillBecomeInvisibleDelegateEvent(System.Int32 vmID, IntPtr jevent, IntPtr ac)
{
JabApi.releaseJavaObject(vmID, ac);
JabApi.releaseJavaObject(vmID, jevent);
}

static void PopupMenuWillBecomeVisibleDelegateEvent(System.Int32 vmID, IntPtr jevent, IntPtr ac)
{
JabApi.releaseJavaObject(vmID, ac);
JabApi.releaseJavaObject(vmID, jevent);
}

static void PropertyActiveDescendentChangeDelegateEvent(System.Int32 vmID, IntPtr jevent, IntPtr ac,
IntPtr oldActiveDescendent, IntPtr newActiveDescendent)
{
JabApi.releaseJavaObject(vmID, ac);
JabApi.releaseJavaObject(vmID, jevent);
}

static void PropertySelectionChangeDelegateEvent(System.Int32 vmID, IntPtr jevent, IntPtr ac)
{
JabApi.releaseJavaObject(vmID, ac);
JabApi.releaseJavaObject(vmID, jevent);
}

static void PropertyStateChangeDelegateEvent(System.Int32 vmID, IntPtr jevent, IntPtr ac,
[MarshalAs(UnmanagedType.LPWStr)] string oldState, [MarshalAs(UnmanagedType.LPWStr)] string newState)
{
JabApi.releaseJavaObject(vmID, ac);
JabApi.releaseJavaObject(vmID, jevent);
}

static void PropertyTableModelChangeDelegateEvent(System.Int32 vmID, IntPtr jevent, IntPtr ac, IntPtr oldValue, IntPtr newValue)
{
JabApi.releaseJavaObject(vmID, ac);
JabApi.releaseJavaObject(vmID, jevent);
}

static void PropertyValueChangeDelegateEvent(System.Int32 vmID, IntPtr jevent, IntPtr ac,
[MarshalAs(UnmanagedType.LPWStr)] string oldValue, [MarshalAs(UnmanagedType.LPWStr)] string newValue)
{
JabApi.releaseJavaObject(vmID, ac);
JabApi.releaseJavaObject(vmID, jevent);
}
}
}
GeneralRe: C# - System.Windows.Automation with Java, Java Access Bridge with WindowsAccessBridge.dll Pin
vishnukamath31-Oct-17 20:08
vishnukamath31-Oct-17 20:08 
QuestionFinding the number of Occurance of a string Pin
praveenqwe24-Sep-06 23:53
praveenqwe24-Sep-06 23:53 
AnswerRe: Finding the number of Occurance of a string Pin
Christian Graus25-Sep-06 0:01
protectorChristian Graus25-Sep-06 0:01 
AnswerRe: Finding the number of Occurance of a string Pin
Ed.Poore25-Sep-06 0:38
Ed.Poore25-Sep-06 0:38 
GeneralRe: Finding the number of Occurance of a string Pin
asishpatnaik25-Sep-06 1:08
asishpatnaik25-Sep-06 1:08 
GeneralRe: Finding the number of Occurance of a string Pin
Ed.Poore25-Sep-06 1:30
Ed.Poore25-Sep-06 1:30 
AnswerRe: Finding the number of Occurance of a string Pin
Guffa25-Sep-06 2:44
Guffa25-Sep-06 2:44 
Questionhow to open gprs connection from my pocket pc 2003 Pin
mohdmeraj24-Sep-06 23:53
mohdmeraj24-Sep-06 23:53 
Questionupdate app.config file at runtime Pin
steve_rm24-Sep-06 23:50
steve_rm24-Sep-06 23:50 
AnswerRe: update app.config file at runtime Pin
Christian Graus24-Sep-06 23:57
protectorChristian Graus24-Sep-06 23:57 
GeneralRe: update app.config file at runtime Pin
steve_rm25-Sep-06 1:22
steve_rm25-Sep-06 1:22 
GeneralRe: update app.config file at runtime Pin
Ed.Poore25-Sep-06 1:31
Ed.Poore25-Sep-06 1:31 
QuestionRe: update app.config file at runtime Pin
steve_rm25-Sep-06 4:47
steve_rm25-Sep-06 4:47 
AnswerRe: update app.config file at runtime Pin
Ed.Poore25-Sep-06 5:25
Ed.Poore25-Sep-06 5:25 
QuestionRe: update app.config file at runtime Pin
steve_rm25-Sep-06 4:48
steve_rm25-Sep-06 4:48 
GeneralRe: update app.config file at runtime Pin
S. Senthil Kumar25-Sep-06 5:20
S. Senthil Kumar25-Sep-06 5:20 
QuestionRe: update app.config file at runtime Pin
steve_rm25-Sep-06 6:42
steve_rm25-Sep-06 6:42 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.