Migrate to buildable gradle project

* add gradle wrapper
* move source files to gradle project layout
* use SetWindowLongPtr instead of SetWindowLong
* add static library files for Gdi32
* migrate to use jlibloader 0.2
* move auxiliary files to project root
* remove obsolete files
This commit is contained in:
2014-11-26 22:27:44 +00:00
parent f986dd58c5
commit 31050c8893
44 changed files with 1135 additions and 1495 deletions

7
.gitignore vendored Normal file
View File

@@ -0,0 +1,7 @@
bin
build
.gradle
.classpath
.project
.maven
.settings

Binary file not shown.

Binary file not shown.

160
build.gradle Normal file
View File

@@ -0,0 +1,160 @@
apply plugin: 'java'
apply plugin: 'cpp'
apply plugin: 'maven'
apply plugin: 'eclipse'
repositories {
maven {
url 'https://github.com/Boukefalos/jlibloader/raw/mvn-repo/'
}
}
dependencies {
compile 'com.github.boukefalos:jlibloader:0.2'
}
group = 'com.github.boukefalos'
project.archivesBaseName = 'jlibintellitype'
version = '1.3.9'
task wrapper(type: Wrapper) {
gradleVersion = '1.12'
}
model {
platforms {
windows_i386 {
architecture 'i386'
operatingSystem 'windows'
}
windows_amd64 {
architecture 'amd64'
operatingSystem 'windows'
}
}
toolChains {
gcc(Gcc) {
addPlatformConfiguration(new TargetPlatformConfiguration() {
boolean supportsPlatform(Platform platform) {
platform.operatingSystem.current && platform.operatingSystem.name == 'windows' &&
platform.architecture.name == 'amd64'
}
List<String> getCppCompilerArgs() { ['-m64', '-fpermissive'] }
List<String> getCCompilerArgs() { ['-m64'] }
List<String> getObjectiveCCompilerArgs() { ['-m64'] }
List<String> getObjectiveCppCompilerArgs() { ['-m64'] }
List<String> getAssemblerArgs() { ['--64'] }
List<String> getLinkerArgs() { ['-m64'] }
List<String> getStaticLibraryArchiverArgs() { [] }
})
}
}
repositories {
libs(PrebuiltLibraries) {
Gdi32 { lib ->
binaries.withType(StaticLibraryBinary) {
staticLibraryFile = file("lib/${targetPlatform.name}/${lib.name}.lib")
}
}
}
}
}
def jniHeadersDir = file("$buildDir/headers")
task jniHeaders(dependsOn: compileJava) {
def outputFile = file("$jniHeadersDir/com_melloware_jintellitype_JIntellitype.h")
inputs.files sourceSets.main.output
outputs.file outputFile
exec {
executable org.gradle.internal.jvm.Jvm.current().getExecutable('javah')
args '-o', outputFile
args '-classpath', sourceSets.main.output.classesDir
args '-classpath', file("$buildDir/../bin")
args 'com.melloware.jintellitype.JIntellitype'
}
}
libraries {
main {
baseName project.archivesBaseName
}
all {
binaries.all {
cppCompiler.args '-I' + jniHeadersDir
cppCompiler.args "-I${org.gradle.internal.jvm.Jvm.current().javaHome}/include"
cppCompiler.args "-I${org.gradle.internal.jvm.Jvm.current().javaHome}/include/win32"
linker.args '-Wl,--kill-at', '-static-libgcc', '-static-libstdc++'
tasks.withType(CppCompile) { task ->
task.dependsOn jniHeaders
}
lib library: 'Gdi32', linkage: 'static'
}
}
}
tasks.withType(Upload) {
repositories {
mavenDeployer {
repository(url: uri('.maven'))
}
}
}
configurations {
jni
}
def deployer = uploadJni.repositories.mavenDeployer
binaries.withType(SharedLibraryBinary) { binary ->
if (!buildable) {
return
}
def variantName = "${targetPlatform.operatingSystem.name}-${targetPlatform.architecture.name}"
def taskName = "jar-${variantName}"
def nativeJar = project.tasks.findByName(taskName)
if (nativeJar == null) {
nativeJar = project.task(taskName, type: Jar) {
baseName = "${project.archivesBaseName}-$variantName"
}
artifacts {
jni nativeJar
}
def jniPom = deployer.addFilter(variantName) { artifact, file ->
return file == nativeJar.archivePath
}
jniPom.groupId = project.group
jniPom.artifactId = nativeJar.baseName
jniPom.version = project.version
jniPom.scopeMappings.mappings.clear()
}
def builderTask = binary.tasks.builder
def libraryDirectory = project.group.replace('.', '/') + "/${project.archivesBaseName}/${variantName}"
nativeJar.into(libraryDirectory) { from builderTask.outputFile }
nativeJar.dependsOn builderTask
}
def mainPom = uploadArchives.repositories.mavenDeployer.pom
mainPom.groupId = project.group
mainPom.artifactId = jar.baseName
mainPom.version = project.version
mainPom.scopeMappings.mappings.clear()
mainPom.withXml { provider ->
def node = provider.asNode()
def deps = node.appendNode('dependencies')
['windows-amd64', 'windows-i386'].each { platform ->
def dep = deps.appendNode('dependency')
dep.appendNode('groupId', project.group)
dep.appendNode('artifactId', "${project.archivesBaseName}-${platform}")
dep.appendNode('version', project.version)
}
def dep = deps.appendNode('dependency')
dep.appendNode('groupId', 'com.github.boukefalos')
dep.appendNode('artifactId', 'jlibloader')
dep.appendNode('version', '0.2')
}
jar {
from sourceSets.main.allSource
}

View File

@@ -1,38 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns="http://maven.apache.org/changes/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd">
<properties>
<title>Release Notes</title>
<author email="mellowaredev_at_gmail_dot_com">Melloware</author>
</properties>
<body>
<release version="1.3.5" date="2010-10-11" description="Extract DLL from JAR">
<action dev="mellowaredev@gmail.com" type="add" due-to="Wordoholic" due-to-email="">
Modified JIntellitype.java a bit so that it would a)copy .dll files from jar to a temp location and b)load 64bit .dll if 32bit fails. Tested on WinXP 32bit and Win7 64bit (with 64bit JVM).
</action>
</release>
<release version="1.3.4" date="2010-04-21" description="Strings for RegisterHotKey">
<action dev="mellowaredev@gmail.com" type="add" due-to="Lars" due-to-email="">
Now enables the user to use all keys instead of just [A-Z],[0-9] as before
</action>
</release>
<release version="1.3.3" date="2010-01-25" description="x64 DLL">
<action dev="mellowaredev@gmail.com" type="fix" due-to="ZeroFlag" due-to-email="">
Added JIntellitype64.dll for 64 bit JRE's. Simply rename the DLL to
JIntellitype.dll or use the Jintellitype.setLibraryLocation(''); function
to set the path to JIntellitype64.dll.
</action>
</release>
<release version="1.3.2" date="2009-07-31" description="Library Location Fix">
<action dev="mellowaredev@gmail.com" type="fix" due-to="Johannes Frank" due-to-email="">
Fixed "Jintellitype.setLibraryLocation('');" method to to allow developers
to set the path of the JIntellitype.DLL for use in executable jar's etc.
</action>
<action dev="mellowaredev@gmail.com" type="fix" due-to="Johannes Frank" due-to-email="">
Removed Commons-Logging dependency
</action>
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns="http://maven.apache.org/changes/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd">
<properties>
<title>Release Notes</title>
<author email="mellowaredev_at_gmail_dot_com">Melloware</author>
</properties>
<body>
<release version="1.3.5" date="2010-10-11" description="Extract DLL from JAR">
<action dev="mellowaredev@gmail.com" type="add" due-to="Wordoholic" due-to-email="">
Modified JIntellitype.java a bit so that it would a)copy .dll files from jar to a temp location and b)load 64bit .dll if 32bit fails. Tested on WinXP 32bit and Win7 64bit (with 64bit JVM).
</action>
</release>
<release version="1.3.4" date="2010-04-21" description="Strings for RegisterHotKey">
<action dev="mellowaredev@gmail.com" type="add" due-to="Lars" due-to-email="">
Now enables the user to use all keys instead of just [A-Z],[0-9] as before
</action>
</release>
<release version="1.3.3" date="2010-01-25" description="x64 DLL">
<action dev="mellowaredev@gmail.com" type="fix" due-to="ZeroFlag" due-to-email="">
Added JIntellitype64.dll for 64 bit JRE's. Simply rename the DLL to
JIntellitype.dll or use the Jintellitype.setLibraryLocation(''); function
to set the path to JIntellitype64.dll.
</action>
</release>
<release version="1.3.2" date="2009-07-31" description="Library Location Fix">
<action dev="mellowaredev@gmail.com" type="fix" due-to="Johannes Frank" due-to-email="">
Fixed "Jintellitype.setLibraryLocation('');" method to to allow developers
to set the path of the JIntellitype.DLL for use in executable jar's etc.
</action>
<action dev="mellowaredev@gmail.com" type="fix" due-to="Johannes Frank" due-to-email="">
Removed Commons-Logging dependency
</action>
</release>
<release version="1.3.1" date="2008-02-11" description="SwingToIntellitype Fix">
<action dev="mellowaredev@gmail.com" type="fix" due-to="Thomas Beckers" due-to-email="">
@@ -55,48 +55,48 @@
and the operating System is Windows and its a 32 bit JDK since it will
not run on 64 bit JVM.
</action>
</release>
<release version="1.2.1" date="2007-10-05" description="Minor update">
<action dev="mellowaredev@gmail.com" type="add" due-to="Usual" due-to-email="usual.smth@gmail.com">
Added Javadoc that explains a modifier of 0 means that no modifier is required if you
want to have a single key be a hotkey.
</action>
<action dev="mellowaredev@gmail.com" type="add" due-to="Usual" due-to-email="usual.smth@gmail.com">
Added example of just using the PRINT_SCREEN key with no modifiers as a hotkey.
</action>
<action dev="mellowaredev@gmail.com" type="add">
Added more constants to JIntellitypeConstants.java based on MSDN documentation.
</release>
<release version="1.2.1" date="2007-10-05" description="Minor update">
<action dev="mellowaredev@gmail.com" type="add" due-to="Usual" due-to-email="usual.smth@gmail.com">
Added Javadoc that explains a modifier of 0 means that no modifier is required if you
want to have a single key be a hotkey.
</action>
<action dev="mellowaredev@gmail.com" type="add" due-to="Usual" due-to-email="usual.smth@gmail.com">
Added example of just using the PRINT_SCREEN key with no modifiers as a hotkey.
</action>
<action dev="mellowaredev@gmail.com" type="add">
Added more constants to JIntellitypeConstants.java based on MSDN documentation.
</action>
<action dev="mellowaredev@gmail.com" type="fix">
Made JIntellitype singleton thread safe by using double checked pattern.
</action>
</release>
<release version="1.2" date="2007-01-11" description="Minor Features Added">
<action dev="mellowaredev@gmail.com" type="add" due-to="Peter Fichtner" due-to-email="fichtner@c2tn.de">
Added registerHotKey(int identifier, String modifierAndKeyCode) to allow Strings like "CTRL+A" to be
used to register hotkeys for applications that want their users to be able to define hotkeys.
</action>
<action dev="mellowaredev@gmail.com" type="add">
Added checkInstanceAlreadyRunning(String appTitle) to prevent multiple instances
of your application from being started if you don't want to. Returns true
if an instance with this application title is already running on the system.
Useful for developers who only want ONE instance of their app running.
</action>
</release>
<release version="1.1" date="2006-12-19" description="Singleton Now">
<action dev="mellowaredev@gmail.com" type="add" due-to="Bertrand Florat" due-to-email="bflorat@sourceforge.net">
Changed Jintellitype to a singleton class like JIntellitype.getInstance()
</action>
<action dev="mellowaredev@gmail.com" type="add" due-to="Bertrand Florat" due-to-email="bflorat@sourceforge.net">
Added ability to use Swing constants for ALT, CTRL, SHIFT.
</action>
</release>
<release version="1.0" date="2006-09-20" description="Initial Version">
<action dev="mellowaredev@gmail.com" type="add">
Initial release of the JIntellitype API.
</action>
</release>
</body>
</action>
</release>
<release version="1.2" date="2007-01-11" description="Minor Features Added">
<action dev="mellowaredev@gmail.com" type="add" due-to="Peter Fichtner" due-to-email="fichtner@c2tn.de">
Added registerHotKey(int identifier, String modifierAndKeyCode) to allow Strings like "CTRL+A" to be
used to register hotkeys for applications that want their users to be able to define hotkeys.
</action>
<action dev="mellowaredev@gmail.com" type="add">
Added checkInstanceAlreadyRunning(String appTitle) to prevent multiple instances
of your application from being started if you don't want to. Returns true
if an instance with this application title is already running on the system.
Useful for developers who only want ONE instance of their app running.
</action>
</release>
<release version="1.1" date="2006-12-19" description="Singleton Now">
<action dev="mellowaredev@gmail.com" type="add" due-to="Bertrand Florat" due-to-email="bflorat@sourceforge.net">
Changed Jintellitype to a singleton class like JIntellitype.getInstance()
</action>
<action dev="mellowaredev@gmail.com" type="add" due-to="Bertrand Florat" due-to-email="bflorat@sourceforge.net">
Added ability to use Swing constants for ALT, CTRL, SHIFT.
</action>
</release>
<release version="1.0" date="2006-09-20" description="Initial Version">
<action dev="mellowaredev@gmail.com" type="add">
Initial release of the JIntellitype API.
</action>
</release>
</body>
</document>

BIN
gradle/wrapper/gradle-wrapper.jar vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1,6 @@
#Wed Nov 26 21:42:48 GMT 2014
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-1.12-bin.zip

164
gradlew vendored Normal file
View File

@@ -0,0 +1,164 @@
#!/usr/bin/env bash
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn ( ) {
echo "$*"
}
die ( ) {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
esac
# For Cygwin, ensure paths are in UNIX format before anything is touched.
if $cygwin ; then
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
fi
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >&-
APP_HOME="`pwd -P`"
cd "$SAVED" >&-
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
function splitJvmOpts() {
JVM_OPTS=("$@")
}
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"

90
gradlew.bat vendored Normal file
View File

@@ -0,0 +1,90 @@
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windowz variants
if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
goto execute
:4NT_args
@rem Get arguments from the 4NT Shell from JP Software
set CMD_LINE_ARGS=%$
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega

BIN
lib/windows_amd64/Gdi32.Lib Normal file

Binary file not shown.

BIN
lib/windows_i386/Gdi32.Lib Normal file

Binary file not shown.

View File

@@ -1 +0,0 @@
mvn release:prepare -Dresume=false -Dusername=GOOGLECODEEMAIL -Dpassword=GOOGLECODEPASSWORD

340
pom.xml
View File

@@ -1,340 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>7</version>
</parent>
<!-- mvn clean javadoc:jar source:jar deploy -->
<!-- mvn release:prepare -Dusername=[username] -Dpassword=[password] -->
<modelVersion>4.0.0</modelVersion>
<groupId>com.melloware</groupId>
<artifactId>jintellitype</artifactId>
<packaging>jar</packaging>
<version>1.3.10-SNAPSHOT</version>
<url>http://www.melloware.com</url>
<name>JIntellitype</name>
<description>JIntellitype - JNI Java bridge to Microsoft Intellitype commands.</description>
<organization>
<name>Melloware Inc</name>
<url>http://www.melloware.com</url>
</organization>
<properties>
<organization.logo>http://melloware.com/images/header.jpg</organization.logo>
</properties>
<inceptionYear>1999</inceptionYear>
<scm>
<connection>scm:svn:https://jintellitype.googlecode.com/svn/trunk</connection>
<developerConnection>scm:svn:https://jintellitype.googlecode.com/svn/trunk</developerConnection>
<url>scm:svn:https://jintellitype.googlecode.com/svn/trunk</url>
</scm>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>
<prerequisites>
<maven>3.0.0</maven>
</prerequisites>
<developers>
<developer>
<id>mellowaredev@gmail.com</id>
<name>Melloware</name>
<email>mellowaredev@gmail.com</email>
<url>http://www.melloware.com</url>
<organization>Melloware Inc</organization>
<organizationUrl>http://www.melloware.com</organizationUrl>
<roles>
<role>Architect</role>
</roles>
</developer>
</developers>
<contributors>
<contributor>
<name>Bertrand Florat</name>
<email>bflorat@users.sourceforge.net</email>
<url>http://jajuk.info</url>
<organization>Jajuk Team</organization>
<organizationUrl>http://jajuk.info</organizationUrl>
<roles>
<role>Code Contributor</role>
</roles>
</contributor>
<contributor>
<name>Peter Fichtner</name>
<email>fichtner@c2tn.de</email>
<url>http://www.c2tn.de</url>
<organization>C2TN Team</organization>
<organizationUrl>http://www.c2tn.de</organizationUrl>
<roles>
<role>Code Contributor</role>
</roles>
</contributor>
<contributor>
<name>Thomas Beckers</name>
<email />
<url>http://www.atunes.org/</url>
<organization>aTunes Team</organization>
<organizationUrl>http://www.atunes.org/</organizationUrl>
<roles>
<role>Code Contributor</role>
</roles>
</contributor>
<contributor>
<name>Karl von Randow</name>
<email />
<url>http://xk72.com/</url>
<organization>XK72</organization>
<organizationUrl>http://xk72.com/</organizationUrl>
<roles>
<role>Code Contributor</role>
</roles>
</contributor>
<contributor>
<name>Johannes Frank</name>
<email />
<url>http://radis.sf.net/</url>
<organization>RadiS</organization>
<organizationUrl>http://radis.sf.net/</organizationUrl>
<roles>
<role>Code Contributor</role>
</roles>
</contributor>
<contributor>
<name>Wordoholic</name>
<email />
<url>http://wordoholic.com/</url>
<organization>Wordoholic</organization>
<organizationUrl>http://wordoholic.com/</organizationUrl>
<roles>
<role>Code Contributor</role>
</roles>
</contributor>
<contributor>
<name>Zeroflag</name>
<email />
<url />
<organization>ZeroFlag</organization>
<organizationUrl />
<roles>
<role>x64 DLL Contributor</role>
</roles>
</contributor>
<contributor>
<name>Lars</name>
<email />
<url />
<organization>Hamburg</organization>
<organizationUrl />
<roles>
<role>Strings for Register Hotkeys</role>
</roles>
</contributor>
</contributors>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.2.1</version>
<configuration>
<releaseProfiles>release-sign-artifacts</releaseProfiles>
<goals>clean javadoc:jar source:jar deploy</goals>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<configuration>
<archive>
<manifest>
<mainClass>com.melloware.jintellitype.Main</mainClass>
</manifest>
</archive>
<descriptors>
<descriptor>src/assembly/descriptor.xml</descriptor>
</descriptors>
<outputDirectory>target/assembly</outputDirectory>
<workDirectory>target/assembly/work</workDirectory>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<!-- this is used for inheritance merges -->
<phase>package</phase>
<!-- append to the packaging phase. -->
<goals>
<goal>assembly</goal>
<!-- goals == mojos -->
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<archive>
<manifest>
<mainClass>com.melloware.jintellitype.Main</mainClass>
</manifest>
<manifestEntries>
<URL>${project.url}</URL>
<Extension-Name>${project.artifactId}</Extension-Name>
<Specification-Vendor>${project.organization.name}</Specification-Vendor>
<Implementation-Vendor>${project.organization.name}</Implementation-Vendor>
<Implementation-Title>${project.description}</Implementation-Title>
<Implementation-Version>${project.version}</Implementation-Version>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.8</version>
<configuration>
<addGroupIdToProjectName>true</addGroupIdToProjectName>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<groupId>org.apache.maven.plugins</groupId>
<version>2.9</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-changes-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>validate-changes</id>
<phase>pre-site</phase>
<goals>
<goal>changes-validate</goal>
</goals>
<configuration>
<failOnError>true</failOnError>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.4</version>
<reportSets>
<reportSet>
<reports>
<report>summary</report>
<report>dependencies</report>
<report>dependency-convergence</report>
<report>project-team</report>
<report>license</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<version>2.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.8</version>
<configuration>
<encoding>UTF-8</encoding>
<show>private</show>
<aggregate>false</aggregate>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>2.5</version>
<configuration>
<rulesets>
<ruleset>/rulesets/basic.xml</ruleset>
<ruleset>/rulesets/imports.xml</ruleset>
<ruleset>/rulesets/unusedcode.xml</ruleset>
<ruleset>/rulesets/finalizers.xml</ruleset>
<ruleset>/rulesets/logging-jakarta-commons.xml</ruleset>
<ruleset>/rulesets/logging-java.xml</ruleset>
<ruleset>/rulesets/migrating_to_15.xml</ruleset>
<ruleset>/rulesets/design.xml</ruleset>
<ruleset>/rulesets/strings.xml</ruleset>
</rulesets>
<minimumTokens>150</minimumTokens>
<linkXref>true</linkXref>
<sourceEncoding>utf-8</sourceEncoding>
<targetJdk>1.6</targetJdk>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-changes-plugin</artifactId>
<version>2.6s</version>
<reportSets>
<reportSet>
<reports>
<report>changes-report</report>
</reports>
</reportSet>
</reportSets>
</plugin>
</plugins>
</reporting>
<profiles>
<profile>
<id>release-sign-artifacts</id>
<activation>
<property>
<name>performRelease</name>
<value>true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>

View File

@@ -1,131 +1,131 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<faqs title="Frequently Asked Questions">
<part id="general">
<title>General</title>
<faq id="what-is-jintellitype">
<question>
What is <strong>JIntellitype</strong>?
</question>
<answer>
<strong>JIntellitype</strong> is a Java API for Windows that allows you to
register global hotkeys and listen for Microsft Intellitype commands.
</answer>
</faq>
<faq id="on-which-platform">
<question>
On which platform does it run?
</question>
<answer>
Since <strong>JIntellitype</strong> uses Windows specific calls it will
only work on Windows. Windows 2000 or higher recommended. For a Linux
version see <a href="http://sourceforge.net/projects/jxgrabkey/">JxGrabKey</a> project on Sourceforge.
</answer>
</faq>
<faq id="x64-jdk">
<question>
Does it run on x64 JDK or JRE's?
</question>
<answer>
Starting with 1.3.3 JINtellitype comes with a 64 bit DLL. To use it Simply rename the DLL to
JIntellitype.dll or use the Jintellitype.setLibraryLocation(''); function to set the path to JIntellitype64.dll.
</answer>
</faq>
<faq id="where-get-help">
<question>
Where do I get help on <strong>JIntellitype</strong>?
</question>
<answer>
This FAQ answers some frequent questions already, please read the
it thoroughly.
<p></p>
If these resources don't help you with your problem,
or if you think that you found a bug that is not yet documented,
you should <a href="contacts.html">contact</a> us.
</answer>
</faq>
<faq id="question-not-addressed">
<question>
I have a question that is not addressed here.
Where can I ask?
</question>
<answer>
See our <a href="contacts.html">Contacts</a> page.
</answer>
</faq>
</part>
<part id="problems">
<title>Problems</title>
<faq id="not-getting-intellitype-messages">
<question>
I am pressing my special Intellitype keys on my keyboard but nothing is happening?
</question>
<answer>
First, make sure you have followed instructions for using JIntellitype properly. Next,
make sure you do not have Microsft Intellitype drivers installed. The Microsoft software
intercepts the messages before they get to JIntellitype and "eats" them. You can tell if
you are running Microsoft Keyboard software by opening Task Manager and looking for the
process name "itype.exe".
</answer>
</faq>
<faq id="two-instances">
<question>
I am using Jintellitype.checkInstanceAlreadyRunning("MyApp") but it is allowing me to open
my application more than once when I am expecting it not to?
</question>
<answer>
Make sure that "MyApp" is the getTitle() of the main JFrame of your application.
JIntellitype checks by Window title name.
</answer>
</faq>
</part>
<part id="development">
<title>Development</title>
<faq id="can-i-contribute">
<question>
Can I contribute?
</question>
<answer>
Yes, please! Check out the <a href="contacts.html">contact</a> page and contact us!
</answer>
</faq>
<faq id="i-found-a-bug">
<question>
I think I found a bug in <strong>JIntellitype</strong>.
What should I do?
</question>
<answer>
You should post it to the <a href="http://forum.melloware.com/index.php">forums</a> to
make sure it is documented.
</answer>
</faq>
<faq id="when-will-feature">
<question>
When will feature XYZ be implemented?
</question>
<answer>
Depends. If it is something you really sorely need, you could (politely)
try to exert some pressure on us. You can also try to pay us.
Or try to implement your feature yourself and send us some patches.
In any case, you should <a href="contacts.html">contact</a> us about your problem.
</answer>
</faq>
</part>
<?xml version="1.0" encoding="ISO-8859-1"?>
<faqs title="Frequently Asked Questions">
<part id="general">
<title>General</title>
<faq id="what-is-jintellitype">
<question>
What is <strong>JIntellitype</strong>?
</question>
<answer>
<strong>JIntellitype</strong> is a Java API for Windows that allows you to
register global hotkeys and listen for Microsft Intellitype commands.
</answer>
</faq>
<faq id="on-which-platform">
<question>
On which platform does it run?
</question>
<answer>
Since <strong>JIntellitype</strong> uses Windows specific calls it will
only work on Windows. Windows 2000 or higher recommended. For a Linux
version see <a href="http://sourceforge.net/projects/jxgrabkey/">JxGrabKey</a> project on Sourceforge.
</answer>
</faq>
<faq id="x64-jdk">
<question>
Does it run on x64 JDK or JRE's?
</question>
<answer>
Starting with 1.3.3 JINtellitype comes with a 64 bit DLL. To use it Simply rename the DLL to
JIntellitype.dll or use the Jintellitype.setLibraryLocation(''); function to set the path to JIntellitype64.dll.
</answer>
</faq>
<faq id="where-get-help">
<question>
Where do I get help on <strong>JIntellitype</strong>?
</question>
<answer>
This FAQ answers some frequent questions already, please read the
it thoroughly.
<p></p>
If these resources don't help you with your problem,
or if you think that you found a bug that is not yet documented,
you should <a href="contacts.html">contact</a> us.
</answer>
</faq>
<faq id="question-not-addressed">
<question>
I have a question that is not addressed here.
Where can I ask?
</question>
<answer>
See our <a href="contacts.html">Contacts</a> page.
</answer>
</faq>
</part>
<part id="problems">
<title>Problems</title>
<faq id="not-getting-intellitype-messages">
<question>
I am pressing my special Intellitype keys on my keyboard but nothing is happening?
</question>
<answer>
First, make sure you have followed instructions for using JIntellitype properly. Next,
make sure you do not have Microsft Intellitype drivers installed. The Microsoft software
intercepts the messages before they get to JIntellitype and "eats" them. You can tell if
you are running Microsoft Keyboard software by opening Task Manager and looking for the
process name "itype.exe".
</answer>
</faq>
<faq id="two-instances">
<question>
I am using Jintellitype.checkInstanceAlreadyRunning("MyApp") but it is allowing me to open
my application more than once when I am expecting it not to?
</question>
<answer>
Make sure that "MyApp" is the getTitle() of the main JFrame of your application.
JIntellitype checks by Window title name.
</answer>
</faq>
</part>
<part id="development">
<title>Development</title>
<faq id="can-i-contribute">
<question>
Can I contribute?
</question>
<answer>
Yes, please! Check out the <a href="contacts.html">contact</a> page and contact us!
</answer>
</faq>
<faq id="i-found-a-bug">
<question>
I think I found a bug in <strong>JIntellitype</strong>.
What should I do?
</question>
<answer>
You should post it to the <a href="http://forum.melloware.com/index.php">forums</a> to
make sure it is documented.
</answer>
</faq>
<faq id="when-will-feature">
<question>
When will feature XYZ be implemented?
</question>
<answer>
Depends. If it is something you really sorely need, you could (politely)
try to exert some pressure on us. You can also try to pay us.
Or try to implement your feature yourself and send us some patches.
In any case, you should <a href="contacts.html">contact</a> us about your problem.
</answer>
</faq>
</part>
</faqs>

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

Before

Width:  |  Height:  |  Size: 766 B

After

Width:  |  Height:  |  Size: 766 B

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -1,32 +1,32 @@
<?xml version="1.0"?>
<document>
<properties>
<title>Contacts</title>
<author email="info.AT.melloware.DOT.com">Emil A Lefkof III</author>
</properties>
<body>
<section name="Contacts">
<p>
The preferred way of getting in touch with one of the developers of
<strong>JIntellitype</strong> is via the <a href="http://forum.melloware.com/index.php">forums</a>.
Please direct any matters of general user support, questions, suggestions, discussions, etc.,
to the <a href="http://forum.melloware.com/index.php">forums</a>.
</p>
<subsection name="Developers and Contributors">
<p>
In special cases, you may try to contact directly one of the
<a href="team-list.html">developers or contributors</a>. You
can always send request to info@melloware.com also.
</p>
</subsection>
</section>
</body>
<?xml version="1.0"?>
<document>
<properties>
<title>Contacts</title>
<author email="info.AT.melloware.DOT.com">Emil A Lefkof III</author>
</properties>
<body>
<section name="Contacts">
<p>
The preferred way of getting in touch with one of the developers of
<strong>JIntellitype</strong> is via the <a href="http://forum.melloware.com/index.php">forums</a>.
Please direct any matters of general user support, questions, suggestions, discussions, etc.,
to the <a href="http://forum.melloware.com/index.php">forums</a>.
</p>
<subsection name="Developers and Contributors">
<p>
In special cases, you may try to contact directly one of the
<a href="team-list.html">developers or contributors</a>. You
can always send request to info@melloware.com also.
</p>
</subsection>
</section>
</body>
</document>

View File

@@ -1,37 +1,37 @@
<document>
<properties>
<title>JIntellitype</title>
<author email="info.AT.melloware.DOT.com">Emil A Lefkof III</author>
</properties>
<body>
<section name="Compiling Dev C++ DLL">
<p>
Jintellitype uses the <a href="http://www.bloodshed.net/dev/devcpp.html">Bloodshed Dev C++ IDE</a> for compiling the JIntellitype.dll.
</p>
<p>
1. Once you have DevC++ installed, just open the JIntellitype.dev project file.
</p>
<p>
2. Navigate to the menu option <strong>Project->Options</strong>.
</p>
<p>
3. Make sure to set the entries in the screenshot below to your JDK location.
<br/>
<img alt="Project Options" src="./images/devc-jni.jpg"/>
</p>
<p>
4. Change your <strong>Project->Options Build Options</strong> to point to an output directory of your choosing.
</p>
<p>
5. Use the menu or toolbar button to build the DLL!
</p>
</section>
</body>
<document>
<properties>
<title>JIntellitype</title>
<author email="info.AT.melloware.DOT.com">Emil A Lefkof III</author>
</properties>
<body>
<section name="Compiling Dev C++ DLL">
<p>
Jintellitype uses the <a href="http://www.bloodshed.net/dev/devcpp.html">Bloodshed Dev C++ IDE</a> for compiling the JIntellitype.dll.
</p>
<p>
1. Once you have DevC++ installed, just open the JIntellitype.dev project file.
</p>
<p>
2. Navigate to the menu option <strong>Project->Options</strong>.
</p>
<p>
3. Make sure to set the entries in the screenshot below to your JDK location.
<br/>
<img alt="Project Options" src="./images/devc-jni.jpg"/>
</p>
<p>
4. Change your <strong>Project->Options Build Options</strong> to point to an output directory of your choosing.
</p>
<p>
5. Use the menu or toolbar button to build the DLL!
</p>
</section>
</body>
</document>

View File

@@ -1,136 +1,136 @@
<document>
<properties>
<title>Java API for Microsoft Intellitype</title>
<author email="info.AT.melloware.DOT.com">Emil A Lefkof III</author>
</properties>
<body>
<section name="JIntellitype API">
<subsection name="Introduction">
<p>
JIntellitype is a Java API for interacting with Microsoft Intellitype
commands as well as registering for Global Hotkeys in your Java application.
The API is a Java JNI library that uses a C++ DLL to do all the communication
with Windows. <strong>NOTE:</strong> This library ONLY works on Windows. If
you are looking for a Linux version please see <a href="http://sourceforge.net/projects/jxgrabkey/">JxGrabKey</a> project on Sourceforge.
</p>
</subsection>
<subsection name="Hotkeys">
<p>
Have you ever wanted to have CTRL+SHIFT+G maximize your Swing application
on the desktop? Even if that application did not have focus? Well, now you can! By
registering a Windows Hotkey combination, your application will be alerted
when the combination you select is pressed anywhere in Windows. Windows has the
API call <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputfunctions/registerhotkey.asp">RegisterHotKey</a>
for registering a global hotkey combination so that your app receives that message
no matter what else you are doing or even if your application has focus. This is
a commonly requested feature in Java that has now been implemented by JIntellitype.
Check out the <a href="quick-start.html">Quick Start Guide</a> for an example on how to use JIntellitype.
</p>
</subsection>
<subsection name="Intellitype">
<p>
Have you ever wanted your Java application to react to those special Play, Pause,
Stop keys on some newer keyboards like Winamp and Windows Media Player do? Ever wonder how they do it?
If you want your application to "listen" for those special keys, now you can with JIntellitype!
Just register an IntellitypeListener and you will be notified when those messages are received.
To read more about these special commands see the <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputmessages/wm_appcommand.asp">MSDN Documentation</a>
about the Intellitype commands.
Check out the <a href="quick-start.html">Quick Start Guide</a> for an example on how to use JIntellitype.
</p>
</subsection>
<subsection name="Donate">
<p>
Although JIntellitype is open source, small financial donations are appreciated. By supporting Melloware, you help fund the development
(mainly development tools and internet access etc) of Melloware's Software. To send money, simply click on the PayPal icon to the left.
</p>
</subsection>
<subsection name="Applications Using JIntellitype">
<p>
<a href="http://melloware.com/products/jukes/index.html">Jukes</a> cross platform music player and organizer.
</p>
<p>
<a href="http://jajuk.sourceforge.net">JaJuk</a> cross platform swiss army knife music player including DJ mode and much more!
</p>
<p>
<a href="http://www.c2tn.de">C2TN</a> C2TN is the first RSS Reader which integrates completely into your desktop.
</p>
<p>
<a href="http://www.atunes.org/">aTunes</a> aTunes is a GPL audio player and manager.
</p>
<p>
<a href="http://www.topkeys.net">Topkeys</a> emulates the mouse using the keyboard.
</p>
<p>
<a href="http://code.google.com/p/google-translate-desktop/">Google Translate Desktop</a> is a free unofficial Java desktop client based on Google Translate service.
</p>
<p>
<a href="http://kolovos.wiki.sourceforge.net/MiniGen">MiniGen</a> is a program that can generate text in any Windows-based (tested on XP/Vista) application based on the currently selected text in a non-invasive manner.
</p>
<p>
<a href="http://xtrememp.sourceforge.net/">Xtreme Media Player</a> is a free cross-platform media player.
</p>
<p>
<a href="http://github.com/marnix/mytime/tree/master">MyTime</a> is a simple time tracker, mostly controlled through the tray icon.
</p>
<p>
<a href="http://radis.sourceforge.net/">RadiS</a> is a cool-looking mouse menu that opens upon a global hot-key. Allows sub-menus which will be displayed in an adjacent partly circle.
</p>
<p>
<a href="http://jshot.info/">JShot</a> is a free and multiplatform screen capture and uploader utility which allows you to capture a part of your screen and publish it in one step.
</p>
<p>
<a href="http://sourceforge.net/projects/opensoundboard">OpenSoundboard</a> plays sound files (.wav, .mp3) when the user presses hotkeys.
</p>
<p>
<a href="http://clipcomrade.sourceforge.net/">Clipcomrade</a> - simple and free open source windows clipboard manager tool
</p>
<p>
<a href="http://wordoholic.com/">Wordoholic Learner</a> - a cross-platform language learning tool
</p>
<p>
<a href="http://code.google.com/p/hotshots/">Hotshots</a> - Easy to use screenshot utility for Windows and Linux
</p>
<p>
<a href="http://code.google.com/p/g15lastfm/">G15Lastfm</a> - Last.fm player for G15 gaming keyboard
</p>
<p>
<a href="http://code.google.com/p/webapp-workplace/">webapp-workplace</a> - Web Workspace/Client to provide notifications for different web applications such as gmail, facebook, etc.
</p>
<p>
<a href="http://code.google.com/p/hawkscope/">Hawkscope</a> - is a productivity tool that allows you to access your hard drive contents quickly via system tray / menubar icon with dynamic pop-up menu.
</p>
</subsection>
<subsection name="Features">
<ul>
<li>Can register global hotkey combinations in Java applications in Windows </li>
<li>Application is notified even if it does not have focus.</li>
<li>Can react to those Play, Pause, Stop, Next, Forward Media keys like Winamp</li>
<li>Very little code, easy to use API</li>
<li>Examples included in <a href="xref-test/com/melloware/JIntellitypeTester.html">JIntellitypeTester.java</a></li>
</ul>
</subsection>
</section>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-2908999-2";
urchinTracker();
</script>
</body>
<document>
<properties>
<title>Java API for Microsoft Intellitype</title>
<author email="info.AT.melloware.DOT.com">Emil A Lefkof III</author>
</properties>
<body>
<section name="JIntellitype API">
<subsection name="Introduction">
<p>
JIntellitype is a Java API for interacting with Microsoft Intellitype
commands as well as registering for Global Hotkeys in your Java application.
The API is a Java JNI library that uses a C++ DLL to do all the communication
with Windows. <strong>NOTE:</strong> This library ONLY works on Windows. If
you are looking for a Linux version please see <a href="http://sourceforge.net/projects/jxgrabkey/">JxGrabKey</a> project on Sourceforge.
</p>
</subsection>
<subsection name="Hotkeys">
<p>
Have you ever wanted to have CTRL+SHIFT+G maximize your Swing application
on the desktop? Even if that application did not have focus? Well, now you can! By
registering a Windows Hotkey combination, your application will be alerted
when the combination you select is pressed anywhere in Windows. Windows has the
API call <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputfunctions/registerhotkey.asp">RegisterHotKey</a>
for registering a global hotkey combination so that your app receives that message
no matter what else you are doing or even if your application has focus. This is
a commonly requested feature in Java that has now been implemented by JIntellitype.
Check out the <a href="quick-start.html">Quick Start Guide</a> for an example on how to use JIntellitype.
</p>
</subsection>
<subsection name="Intellitype">
<p>
Have you ever wanted your Java application to react to those special Play, Pause,
Stop keys on some newer keyboards like Winamp and Windows Media Player do? Ever wonder how they do it?
If you want your application to "listen" for those special keys, now you can with JIntellitype!
Just register an IntellitypeListener and you will be notified when those messages are received.
To read more about these special commands see the <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputmessages/wm_appcommand.asp">MSDN Documentation</a>
about the Intellitype commands.
Check out the <a href="quick-start.html">Quick Start Guide</a> for an example on how to use JIntellitype.
</p>
</subsection>
<subsection name="Donate">
<p>
Although JIntellitype is open source, small financial donations are appreciated. By supporting Melloware, you help fund the development
(mainly development tools and internet access etc) of Melloware's Software. To send money, simply click on the PayPal icon to the left.
</p>
</subsection>
<subsection name="Applications Using JIntellitype">
<p>
<a href="http://melloware.com/products/jukes/index.html">Jukes</a> cross platform music player and organizer.
</p>
<p>
<a href="http://jajuk.sourceforge.net">JaJuk</a> cross platform swiss army knife music player including DJ mode and much more!
</p>
<p>
<a href="http://www.c2tn.de">C2TN</a> C2TN is the first RSS Reader which integrates completely into your desktop.
</p>
<p>
<a href="http://www.atunes.org/">aTunes</a> aTunes is a GPL audio player and manager.
</p>
<p>
<a href="http://www.topkeys.net">Topkeys</a> emulates the mouse using the keyboard.
</p>
<p>
<a href="http://code.google.com/p/google-translate-desktop/">Google Translate Desktop</a> is a free unofficial Java desktop client based on Google Translate service.
</p>
<p>
<a href="http://kolovos.wiki.sourceforge.net/MiniGen">MiniGen</a> is a program that can generate text in any Windows-based (tested on XP/Vista) application based on the currently selected text in a non-invasive manner.
</p>
<p>
<a href="http://xtrememp.sourceforge.net/">Xtreme Media Player</a> is a free cross-platform media player.
</p>
<p>
<a href="http://github.com/marnix/mytime/tree/master">MyTime</a> is a simple time tracker, mostly controlled through the tray icon.
</p>
<p>
<a href="http://radis.sourceforge.net/">RadiS</a> is a cool-looking mouse menu that opens upon a global hot-key. Allows sub-menus which will be displayed in an adjacent partly circle.
</p>
<p>
<a href="http://jshot.info/">JShot</a> is a free and multiplatform screen capture and uploader utility which allows you to capture a part of your screen and publish it in one step.
</p>
<p>
<a href="http://sourceforge.net/projects/opensoundboard">OpenSoundboard</a> plays sound files (.wav, .mp3) when the user presses hotkeys.
</p>
<p>
<a href="http://clipcomrade.sourceforge.net/">Clipcomrade</a> - simple and free open source windows clipboard manager tool
</p>
<p>
<a href="http://wordoholic.com/">Wordoholic Learner</a> - a cross-platform language learning tool
</p>
<p>
<a href="http://code.google.com/p/hotshots/">Hotshots</a> - Easy to use screenshot utility for Windows and Linux
</p>
<p>
<a href="http://code.google.com/p/g15lastfm/">G15Lastfm</a> - Last.fm player for G15 gaming keyboard
</p>
<p>
<a href="http://code.google.com/p/webapp-workplace/">webapp-workplace</a> - Web Workspace/Client to provide notifications for different web applications such as gmail, facebook, etc.
</p>
<p>
<a href="http://code.google.com/p/hawkscope/">Hawkscope</a> - is a productivity tool that allows you to access your hard drive contents quickly via system tray / menubar icon with dynamic pop-up menu.
</p>
</subsection>
<subsection name="Features">
<ul>
<li>Can register global hotkey combinations in Java applications in Windows </li>
<li>Application is notified even if it does not have focus.</li>
<li>Can react to those Play, Pause, Stop, Next, Forward Media keys like Winamp</li>
<li>Very little code, easy to use API</li>
<li>Examples included in <a href="xref-test/com/melloware/JIntellitypeTester.html">JIntellitypeTester.java</a></li>
</ul>
</subsection>
</section>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-2908999-2";
urchinTracker();
</script>
</body>
</document>

View File

@@ -1,110 +1,110 @@
<document>
<properties>
<title>JIntellitype</title>
<author email="info.AT.melloware.DOT.com">Emil A Lefkof III</author>
</properties>
<body>
<section name="Quick Start Guide">
<p>
Here is a simple quick start for getting up and running with JIntellitype quickly.
An <a href="xref-test/com/melloware/JIntellitypeTester.html">Example</a> is also included in the
distribution to show you how easy it is to use JIntellitype.
</p>
<subsection name="Eclipse">
<p>
If you are familiar with Eclipse there is a full working example Eclipse project that can be
found here <a href="http://melloware.com/download/jintellitype/jintellitype-example.zip">Eclipse Example</a>.
In Eclipse just navigate to <strong>File->Import->Existing Project Into Workspace</strong> and you are ready to go.
</p>
</subsection>
<subsection name="Instructions">
<p>
1. Make sure JIntellitype.dll is in your PATH or in \Windows\System32.
</p>
<p>
2. Initialize a <a href="apidocs/com/melloware/jintellitype/JIntellitype.html">JIntellitype</a> object.
<source>
<document>
<properties>
<title>JIntellitype</title>
<author email="info.AT.melloware.DOT.com">Emil A Lefkof III</author>
</properties>
<body>
<section name="Quick Start Guide">
<p>
Here is a simple quick start for getting up and running with JIntellitype quickly.
An <a href="xref-test/com/melloware/JIntellitypeTester.html">Example</a> is also included in the
distribution to show you how easy it is to use JIntellitype.
</p>
<subsection name="Eclipse">
<p>
If you are familiar with Eclipse there is a full working example Eclipse project that can be
found here <a href="http://melloware.com/download/jintellitype/jintellitype-example.zip">Eclipse Example</a>.
In Eclipse just navigate to <strong>File->Import->Existing Project Into Workspace</strong> and you are ready to go.
</p>
</subsection>
<subsection name="Instructions">
<p>
1. Make sure JIntellitype.dll is in your PATH or in \Windows\System32.
</p>
<p>
2. Initialize a <a href="apidocs/com/melloware/jintellitype/JIntellitype.html">JIntellitype</a> object.
<source>
// Initialize JIntellitype
...
JIntellitype.getInstance();
...
// OPTIONAL: check to see if an instance of this application is already
// running, use the name of the window title of this JFrame for checking
if (JIntellitype.checkInstanceAlreadyRunning("MyApp")) {
LOG.error("An instance of this application is already running");
System.exit(1);
}
</source>
</p>
<p>
3. To listen to hotkey's, you need to register the combinations to listen for.
<source>
// Assign global hotkeys to Windows+A and ALT+SHIFT+B
JIntellitype.getInstance().registerHotKey(1, JIntellitype.MOD_WIN, (int)'A');
JIntellitype.getInstance().registerHotKey(2, JIntellitype.MOD_ALT + JIntellitype.MOD_SHIFT, (int)'B');
//or you can use the Swing constants instead
JIntellitype.getInstance().registerSwingHotKey(3, Event.CTRL_MASK + Event.SHIFT_MASK, (int)'C');
// To unregister them just call unregisterHotKey with the unique identifier
JIntellitype.getInstance().unregisterHotKey(1);
JIntellitype.getInstance().unregisterHotKey(2);
JIntellitype.getInstance().unregisterHotKey(3);
</source>
</p>
<p>
4. Make sure to add a <a href="apidocs/com/melloware/jintellitype/HotkeyListener.html">HotKeyListener</a> and implement the interface.
<source>
//assign this class to be a HotKeyListener
JIntellitype.getInstance().addHotKeyListener(this);
...
// OPTIONAL: check to see if an instance of this application is already
// running, use the name of the window title of this JFrame for checking
if (JIntellitype.checkInstanceAlreadyRunning("MyApp")) {
LOG.error("An instance of this application is already running");
System.exit(1);
}
</source>
</p>
<p>
3. To listen to hotkey's, you need to register the combinations to listen for.
<source>
// Assign global hotkeys to Windows+A and ALT+SHIFT+B
JIntellitype.getInstance().registerHotKey(1, JIntellitype.MOD_WIN, (int)'A');
JIntellitype.getInstance().registerHotKey(2, JIntellitype.MOD_ALT + JIntellitype.MOD_SHIFT, (int)'B');
//or you can use the Swing constants instead
JIntellitype.getInstance().registerSwingHotKey(3, Event.CTRL_MASK + Event.SHIFT_MASK, (int)'C');
// To unregister them just call unregisterHotKey with the unique identifier
JIntellitype.getInstance().unregisterHotKey(1);
JIntellitype.getInstance().unregisterHotKey(2);
JIntellitype.getInstance().unregisterHotKey(3);
</source>
</p>
<p>
4. Make sure to add a <a href="apidocs/com/melloware/jintellitype/HotkeyListener.html">HotKeyListener</a> and implement the interface.
<source>
//assign this class to be a HotKeyListener
JIntellitype.getInstance().addHotKeyListener(this);
// listen for hotkey
public void onHotKey(int aIdentifier) {
if (aIdentifier == 1)
System.out.println("WINDOWS+A hotkey pressed");
if (aIdentifier == 1)
System.out.println("WINDOWS+A hotkey pressed");
}
}
</source>
</p>
<p>
5. To use Intellitype commands implement the <a href="apidocs/com/melloware/jintellitype/IntellitypeListener.html">IntellitypeListener</a> interface.
<source>
//assign this class to be a IntellitypeListener
JIntellitype.getInstance().addIntellitypeListener(this);
}
</source>
</p>
<p>
5. To use Intellitype commands implement the <a href="apidocs/com/melloware/jintellitype/IntellitypeListener.html">IntellitypeListener</a> interface.
<source>
//assign this class to be a IntellitypeListener
JIntellitype.getInstance().addIntellitypeListener(this);
// listen for intellitype play/pause command
public void onIntellitype(int aCommand) {
switch (aCommand) {
case JIntellitype.APPCOMMAND_MEDIA_PLAY_PAUSE:
System.out.println("Play/Pause message received " + Integer.toString(aCommand));
switch (aCommand) {
case JIntellitype.APPCOMMAND_MEDIA_PLAY_PAUSE:
System.out.println("Play/Pause message received " + Integer.toString(aCommand));
break;
default:
System.out.println("Undefined INTELLITYPE message caught " + Integer.toString(aCommand));
break;
default:
System.out.println("Undefined INTELLITYPE message caught " + Integer.toString(aCommand));
break;
}
}
</source>
</p>
<p>
6. Don't forget to call the cleanup method to release the DLL resources.
<source>
}
</source>
</p>
<p>
6. Don't forget to call the cleanup method to release the DLL resources.
<source>
// Termination, make sure to call before exiting
...
JIntellitype.getInstance().cleanUp();
System.exit(0);
</source>
</p>
</subsection>
</section>
</body>
System.exit(0);
</source>
</p>
</subsection>
</section>
</body>
</document>

View File

@@ -1,35 +0,0 @@
<assembly>
<id>dist</id>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<directory>target</directory>
<outputDirectory></outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
<fileSet>
<directory>src\main</directory>
<excludes>
<exclude>**/.svn/**</exclude>
</excludes>
</fileSet>
<fileSet>
<directory>src\test</directory>
<excludes>
<exclude>**/.svn/**</exclude>
</excludes>
</fileSet>
<fileSet>
<includes>
<include>*.dll</include>
<include>pom.xml</include>
<include>readme.txt</include>
<include>license.txt</include>
</includes>
</fileSet>
</fileSets>
</assembly>

View File

@@ -143,7 +143,7 @@ extern "C"
* Signature: (Ljava/lang/String;)Z
*/
JNIEXPORT jboolean JNICALL Java_com_melloware_jintellitype_JIntellitype_isRunning
(JNIEnv *env, jclass, jstring wndName)
(JNIEnv *env, jobject, jstring wndName)
{
// App name for the hidden window's registered class
CHAR szAppName[] = "SunAwtFrame";

View File

@@ -1,149 +0,0 @@
[Project]
FileName=JIntellitype.dev
Name=JIntellitype
Ver=1
IsCpp=1
Type=3
Compiler=-D__GNUWIN32__ -W -DWIN32 -DNDEBUG -D_WINDOWS -D_MBCS -D_USRDLL -DBUILDING_DLL=1_@@_
CppCompiler=-D__GNUWIN32__ -W -DWIN32 -DNDEBUG -D_WINDOWS -D_MBCS -D_USRDLL_@@_
Includes=c:\java\jdk1.2.2\include;c:\java\jdk1.2.2\include\win32
Linker=-lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32 --no-export-all-symbols --add-stdcall-alias_@@_
Libs=
UnitCount=8
Folders="Header Files","Resource Files","Source Files"
ObjFiles=
PrivateResource=JIntellitype_private.rc
ResourceIncludes=
MakeIncludes=
Icon=
ExeOutput=..\..\..\..\jintellitype
ObjectOutput=..\..\..\target
OverrideOutput=0
OverrideOutputName=JIntellitype.dll
HostApplication=
CommandLine=
UseCustomMakefile=0
CustomMakefile=
IncludeVersionInfo=1
SupportXPThemes=0
CompilerSet=0
CompilerSettings=0000000001001000000100
[Unit1]
FileName=JIntellitypeThread.cpp
Folder="Source Files"
Compile=1
CompileCpp=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit2]
FileName=JIntellitype.cpp
Folder="Source Files"
Compile=1
CompileCpp=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit3]
FileName=JIntellitypeHandler.cpp
Folder="Source Files"
Compile=1
CompileCpp=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit5]
FileName=JIntellitypeHandler.h
Folder="Header Files"
Compile=1
CompileCpp=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit7]
FileName=StdAfx.h
Folder="Header Files"
Compile=1
CompileCpp=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit8]
FileName=com_melloware_jintellitype_JIntellitype.h
Folder=Header Files
Compile=1
CompileCpp=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[VersionInfo]
Major=1
Minor=0
Release=0
Build=465
LanguageID=1033
CharsetID=1252
CompanyName=Melloware Inc (www.melloware.com)
FileVersion=1.0
FileDescription=Java JNI bridge to MS Intellitype commands
InternalName=
LegalCopyright=Copyright 2006 Melloware Inc
LegalTrademarks=Copyright 2006 Melloware Inc
OriginalFilename=
ProductName=JIntellitype
ProductVersion=1.0
AutoIncBuildNr=1
[Unit11]
FileName=com_melloware_jintellitype_JIntellitype.h
CompileCpp=1
Folder=Header Files
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit10]
FileName=com_melloware_jintellitype_JIntellitype.h
CompileCpp=1
Folder=Header Files
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit4]
FileName=StdAfx.cpp
CompileCpp=1
Folder="Source Files"
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit6]
FileName=JIntellitypeThread.h
CompileCpp=1
Folder="Header Files"
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=

View File

@@ -1,76 +0,0 @@
[Editor_9]
CursorCol=1
CursorRow=20
TopLine=1
LeftChar=1
Open=0
Top=0
[Editors]
Focused=2
Order=1,2,0,7,4
[Editor_0]
Open=1
Top=0
CursorCol=5
CursorRow=118
TopLine=71
LeftChar=1
[Editor_1]
Open=1
Top=0
CursorCol=36
CursorRow=149
TopLine=75
LeftChar=1
[Editor_2]
Open=1
Top=1
CursorCol=14
CursorRow=209
TopLine=162
LeftChar=1
[Editor_3]
Open=0
Top=0
CursorCol=23
CursorRow=3
TopLine=1
LeftChar=1
[Editor_4]
Open=1
Top=0
CursorCol=1
CursorRow=27
TopLine=1
LeftChar=1
[Editor_5]
Open=0
Top=0
CursorCol=3
CursorRow=24
TopLine=11
LeftChar=1
[Editor_6]
Open=0
Top=0
CursorCol=1
CursorRow=16
TopLine=1
LeftChar=1
[Editor_7]
Open=1
Top=0
CursorCol=54
CursorRow=35
TopLine=3
LeftChar=1
[Editor_8]
Open=0
Top=0
CursorCol=1
CursorRow=3
TopLine=1
LeftChar=1
[Editor_10]
Open=0
Top=0

View File

@@ -137,7 +137,7 @@ void JIntellitypeHandler::doInitialize()
return;
//Set pointer to this object inside the Window's USERDATA section
SetWindowLong( m_window, GWL_USERDATA, (LONG) this );
SetWindowLongPtr( m_window, GWLP_USERDATA, (LONG) this );
// hide the window
ShowWindow(m_window, SW_HIDE);
@@ -255,7 +255,7 @@ LRESULT CALLBACK JIntellitypeHandler::WndProc( HWND hWnd, UINT uMessage, WPARAM
if (uMessage == WM_SHELLHOOK) {
if (wParam == HSHELL_APPCOMMAND) {
jint cmd = GET_APPCOMMAND_LPARAM(lParam);
JIntellitypeHandler *l_this = (JIntellitypeHandler *) GetWindowLong( hWnd, GWL_USERDATA );
JIntellitypeHandler *l_this = (JIntellitypeHandler *) GetWindowLongPtr( hWnd, GWLP_USERDATA );
l_this->intellitype(cmd);
}
return TRUE;
@@ -264,7 +264,7 @@ LRESULT CALLBACK JIntellitypeHandler::WndProc( HWND hWnd, UINT uMessage, WPARAM
// check for registered hotkey messages and send them to HotKeyListeners
switch( uMessage ) {
case WM_HOTKEY: {
JIntellitypeHandler *l_this = (JIntellitypeHandler *) GetWindowLong( hWnd, GWL_USERDATA );
JIntellitypeHandler *l_this = (JIntellitypeHandler *) GetWindowLongPtr( hWnd, GWLP_USERDATA );
l_this->fireHotKey(wParam);
return TRUE;
break;

View File

@@ -1,35 +0,0 @@
/* THIS FILE WILL BE OVERWRITTEN BY DEV-C++ */
/* DO NOT EDIT! */
#include <windows.h> // include for version info constants
//
// TO CHANGE VERSION INFORMATION, EDIT PROJECT OPTIONS...
//
1 VERSIONINFO
FILEVERSION 1,0,0,465
PRODUCTVERSION 1,0,0,465
FILETYPE VFT_DLL
{
BLOCK "StringFileInfo"
{
BLOCK "040904E4"
{
VALUE "CompanyName", "Melloware Inc (www.melloware.com)"
VALUE "FileVersion", "1.0"
VALUE "FileDescription", "Java JNI bridge to MS Intellitype commands"
VALUE "InternalName", ""
VALUE "LegalCopyright", "Copyright 2006 Melloware Inc"
VALUE "LegalTrademarks", "Copyright 2006 Melloware Inc"
VALUE "OriginalFilename", ""
VALUE "ProductName", "JIntellitype"
VALUE "ProductVersion", "1.0"
}
}
BLOCK "VarFileInfo"
{
VALUE "Translation", 0x0409, 1252
}
}

View File

@@ -1,46 +0,0 @@
# Project: JIntellitype
# Makefile created by Dev-C++ 4.9.9.2
CPP = g++.exe
CC = gcc.exe
WINDRES = windres.exe
RES = ../../../target/JIntellitype_private.res
OBJ = ../../../target/JIntellitypeThread.o ../../../target/JIntellitype.o ../../../target/JIntellitypeHandler.o ../../../target/StdAfx.o $(RES)
LINKOBJ = ../../../target/JIntellitypeThread.o ../../../target/JIntellitype.o ../../../target/JIntellitypeHandler.o ../../../target/StdAfx.o $(RES)
LIBS = -L"C:/Dev-Cpp/lib" -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32 --no-export-all-symbols --add-stdcall-alias -s
INCS = -I"C:/Dev-Cpp/include"
CXXINCS = -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include"
BIN = ../../../../jintellitype/JIntellitype.dll
CXXFLAGS = $(CXXINCS) -D__GNUWIN32__ -W -DWIN32 -DNDEBUG -D_WINDOWS -D_MBCS -D_USRDLL -fexpensive-optimizations -O3
CFLAGS = $(INCS) -D__GNUWIN32__ -W -DWIN32 -DNDEBUG -D_WINDOWS -D_MBCS -D_USRDLL -DBUILDING_DLL=1 -fexpensive-optimizations -O3
RM = rm -f
.PHONY: all all-before all-after clean clean-custom
all: all-before ../../../../jintellitype/JIntellitype.dll all-after
clean: clean-custom
${RM} $(OBJ) $(BIN)
DLLWRAP=dllwrap.exe
DEFFILE=../../../../jintellitype/libJIntellitype.def
STATICLIB=../../../../jintellitype/libJIntellitype.a
$(BIN): $(LINKOBJ)
$(DLLWRAP) --output-def $(DEFFILE) --driver-name c++ --implib $(STATICLIB) $(LINKOBJ) $(LIBS) -o $(BIN)
../../../target/JIntellitypeThread.o: JIntellitypeThread.cpp
$(CPP) -c JIntellitypeThread.cpp -o ../../../target/JIntellitypeThread.o $(CXXFLAGS)
../../../target/JIntellitype.o: JIntellitype.cpp
$(CPP) -c JIntellitype.cpp -o ../../../target/JIntellitype.o $(CXXFLAGS)
../../../target/JIntellitypeHandler.o: JIntellitypeHandler.cpp
$(CPP) -c JIntellitypeHandler.cpp -o ../../../target/JIntellitypeHandler.o $(CXXFLAGS)
../../../target/StdAfx.o: StdAfx.cpp
$(CPP) -c StdAfx.cpp -o ../../../target/StdAfx.o $(CXXFLAGS)
../../../target/JIntellitype_private.res: JIntellitype_private.rc
$(WINDRES) -i JIntellitype_private.rc --input-format=rc -o ../../../target/JIntellitype_private.res -O coff

View File

@@ -1,53 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_melloware_jintellitype_JIntellitype */
#ifndef _Included_com_melloware_jintellitype_JIntellitype
#define _Included_com_melloware_jintellitype_JIntellitype
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_melloware_jintellitype_JIntellitype
* Method: initializeLibrary
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_melloware_jintellitype_JIntellitype_initializeLibrary
(JNIEnv *, jobject);
/*
* Class: com_melloware_jintellitype_JIntellitype
* Method: regHotKey
* Signature: (III)V
*/
JNIEXPORT void JNICALL Java_com_melloware_jintellitype_JIntellitype_regHotKey
(JNIEnv *, jobject, jint, jint, jint);
/*
* Class: com_melloware_jintellitype_JIntellitype
* Method: terminate
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_melloware_jintellitype_JIntellitype_terminate
(JNIEnv *, jobject);
/*
* Class: com_melloware_jintellitype_JIntellitype
* Method: unregHotKey
* Signature: (I)V
*/
JNIEXPORT void JNICALL Java_com_melloware_jintellitype_JIntellitype_unregHotKey
(JNIEnv *, jobject, jint);
/*
* Class: com_melloware_jintellitype_JIntellitype
* Method: isRunning
* Signature: (Ljava/lang/String;)Z
*/
JNIEXPORT jboolean JNICALL Java_com_melloware_jintellitype_JIntellitype_isRunning
(JNIEnv *, jclass, jstring);
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -1,93 +1,93 @@
/*
JIntellitype (http://www.melloware.com/)
Java JNI API for Windows Intellitype commands and global keystrokes.
Copyright (C) 1999, 2008 Emil A. Lefkof III, info@melloware.com
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Compiled with Mingw port of GCC,
Bloodshed Dev-C++ IDE (http://www.bloodshed.net/devcpp.html)
*/
#ifndef __JIntellitypeHandler_h__
#define __JIntellitypeHandler_h__
#include "JIntellitypeThread.h"
class JIntellitypeHandler
{
friend DWORD WINAPI JIntellitypeThread::ThreadProc( LPVOID lpParameter );
public:
static JIntellitypeHandler *extract( JNIEnv *env, jobject object );
JIntellitypeHandler( JNIEnv *env, jobject object );
void initialize( JNIEnv *env, HINSTANCE instance );
void regHotKey( jint identifier, jint modifier, jint keycode );
void unregHotKey( jint identifier );
void intellitype( jint commandId );
void terminate();
private:
enum
{
INITIALIZE_CODE = 1,
REGISTER_HOTKEY_CODE = 2,
UNREGISTER_HOTKEY_CODE = 3,
TERMINATE_CODE = 4,
INTELLITYPE_CODE = 5
};
~JIntellitypeHandler();
void createHiddenWindow();
void doInitialize();
void doRegHotKey(LPARAM callback);
void doUnregisterHotKey(LPARAM callback);
void doIntellitype(LPARAM callback);
void fireHotKey(jint hotkeyId);
void fireIntellitype(jint commandId);
HINSTANCE m_instance;
HWND m_window;
jobject m_object;
jmethodID m_fireHotKey;
jmethodID m_fireIntellitype;
static LRESULT CALLBACK WndProc( HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam );
static DWORD WINAPI ThreadProc( LPVOID lpParameter );
};
typedef struct {
JIntellitypeHandler *handler;
jint identifier;
jint modifier;
jint keycode;
jint command;
} JIntellitypeHandlerCallback;
#ifndef WM_APPCOMMAND
#define WM_APPCOMMAND 0x319
#define FAPPCOMMAND_MASK 0x8000
#define GET_APPCOMMAND_LPARAM(lParam) ((short)(HIWORD(lParam) & ~FAPPCOMMAND_MASK))
#define HSHELL_APPCOMMAND 12
#endif
#endif
/*
JIntellitype (http://www.melloware.com/)
Java JNI API for Windows Intellitype commands and global keystrokes.
Copyright (C) 1999, 2008 Emil A. Lefkof III, info@melloware.com
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Compiled with Mingw port of GCC,
Bloodshed Dev-C++ IDE (http://www.bloodshed.net/devcpp.html)
*/
#ifndef __JIntellitypeHandler_h__
#define __JIntellitypeHandler_h__
#include "JIntellitypeThread.h"
class JIntellitypeHandler
{
friend DWORD WINAPI JIntellitypeThread::ThreadProc( LPVOID lpParameter );
public:
static JIntellitypeHandler *extract( JNIEnv *env, jobject object );
JIntellitypeHandler( JNIEnv *env, jobject object );
void initialize( JNIEnv *env, HINSTANCE instance );
void regHotKey( jint identifier, jint modifier, jint keycode );
void unregHotKey( jint identifier );
void intellitype( jint commandId );
void terminate();
private:
enum
{
INITIALIZE_CODE = 1,
REGISTER_HOTKEY_CODE = 2,
UNREGISTER_HOTKEY_CODE = 3,
TERMINATE_CODE = 4,
INTELLITYPE_CODE = 5
};
~JIntellitypeHandler();
void createHiddenWindow();
void doInitialize();
void doRegHotKey(LPARAM callback);
void doUnregisterHotKey(LPARAM callback);
void doIntellitype(LPARAM callback);
void fireHotKey(jint hotkeyId);
void fireIntellitype(jint commandId);
HINSTANCE m_instance;
HWND m_window;
jobject m_object;
jmethodID m_fireHotKey;
jmethodID m_fireIntellitype;
static LRESULT CALLBACK WndProc( HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam );
static DWORD WINAPI ThreadProc( LPVOID lpParameter );
};
typedef struct {
JIntellitypeHandler *handler;
jint identifier;
jint modifier;
jint keycode;
jint command;
} JIntellitypeHandlerCallback;
#ifndef WM_APPCOMMAND
#define WM_APPCOMMAND 0x319
#define FAPPCOMMAND_MASK 0x8000
#define GET_APPCOMMAND_LPARAM(lParam) ((short)(HIWORD(lParam) & ~FAPPCOMMAND_MASK))
#define HSHELL_APPCOMMAND 12
#endif
#endif

View File

@@ -1,55 +1,55 @@
/*
JIntellitype (http://www.melloware.com/)
Java JNI API for Windows Intellitype commands and global keystrokes.
Copyright (C) 1999, 2008 Emil A. Lefkof III, info@melloware.com
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Compiled with Mingw port of GCC,
Bloodshed Dev-C++ IDE (http://www.bloodshed.net/devcpp.html)
*/
#ifndef __JIntellitypeThread_h__
#define __JIntellitypeThread_h__
class JIntellitypeThread
{
public:
JIntellitypeThread();
void MakeSureThreadIsUp( JNIEnv *env );
JNIEnv *m_env;
static DWORD WINAPI ThreadProc( LPVOID lpParameter );
operator DWORD ();
private:
DWORD m_thread;
JavaVM *m_vm;
int m_handlerCount;
};
extern JIntellitypeThread g_JIntellitypeThread;
#define WM_JINTELLITYPE (WM_USER+1)
#endif
/*
JIntellitype (http://www.melloware.com/)
Java JNI API for Windows Intellitype commands and global keystrokes.
Copyright (C) 1999, 2008 Emil A. Lefkof III, info@melloware.com
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Compiled with Mingw port of GCC,
Bloodshed Dev-C++ IDE (http://www.bloodshed.net/devcpp.html)
*/
#ifndef __JIntellitypeThread_h__
#define __JIntellitypeThread_h__
class JIntellitypeThread
{
public:
JIntellitypeThread();
void MakeSureThreadIsUp( JNIEnv *env );
JNIEnv *m_env;
static DWORD WINAPI ThreadProc( LPVOID lpParameter );
operator DWORD ();
private:
DWORD m_thread;
JavaVM *m_vm;
int m_handlerCount;
};
extern JIntellitypeThread g_JIntellitypeThread;
#define WM_JINTELLITYPE (WM_USER+1)
#endif

View File

@@ -1,23 +1,23 @@
/* THIS FILE WILL BE OVERWRITTEN BY DEV-C++ */
/* DO NOT EDIT ! */
#ifndef JINTELLITYPE_PRIVATE_H
#define JINTELLITYPE_PRIVATE_H
/* VERSION DEFINITIONS */
#define VER_STRING "1.0.0.465"
#define VER_MAJOR 1
#define VER_MINOR 0
#define VER_RELEASE 0
#define VER_BUILD 465
#define COMPANY_NAME "Melloware Inc (www.melloware.com)"
#define FILE_VERSION "1.0"
#define FILE_DESCRIPTION "Java JNI bridge to MS Intellitype commands"
#define INTERNAL_NAME ""
#define LEGAL_COPYRIGHT "Copyright 2006 Melloware Inc"
#define LEGAL_TRADEMARKS "Copyright 2006 Melloware Inc"
#define ORIGINAL_FILENAME ""
#define PRODUCT_NAME "JIntellitype"
#define PRODUCT_VERSION "1.0"
#endif /*JINTELLITYPE_PRIVATE_H*/
/* THIS FILE WILL BE OVERWRITTEN BY DEV-C++ */
/* DO NOT EDIT ! */
#ifndef JINTELLITYPE_PRIVATE_H
#define JINTELLITYPE_PRIVATE_H
/* VERSION DEFINITIONS */
#define VER_STRING "1.0.0.465"
#define VER_MAJOR 1
#define VER_MINOR 0
#define VER_RELEASE 0
#define VER_BUILD 465
#define COMPANY_NAME "Melloware Inc (www.melloware.com)"
#define FILE_VERSION "1.0"
#define FILE_DESCRIPTION "Java JNI bridge to MS Intellitype commands"
#define INTERNAL_NAME ""
#define LEGAL_COPYRIGHT "Copyright 2006 Melloware Inc"
#define LEGAL_TRADEMARKS "Copyright 2006 Melloware Inc"
#define ORIGINAL_FILENAME ""
#define PRODUCT_NAME "JIntellitype"
#define PRODUCT_VERSION "1.0"
#endif /*JINTELLITYPE_PRIVATE_H*/

View File

@@ -1,24 +1,24 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#if !defined(AFX_STDAFX_H__1F571525_24C2_11D3_B0CF_0000E85D9A83__INCLUDED_)
#define AFX_STDAFX_H__1F571525_24C2_11D3_B0CF_0000E85D9A83__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Insert your headers here
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <windows.h>
#include <shellapi.h>
#include <jni.h>
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_STDAFX_H__1F571525_24C2_11D3_B0CF_0000E85D9A83__INCLUDED_)
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#if !defined(AFX_STDAFX_H__1F571525_24C2_11D3_B0CF_0000E85D9A83__INCLUDED_)
#define AFX_STDAFX_H__1F571525_24C2_11D3_B0CF_0000E85D9A83__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Insert your headers here
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <windows.h>
#include <shellapi.h>
#include <jni.h>
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_STDAFX_H__1F571525_24C2_11D3_B0CF_0000E85D9A83__INCLUDED_)

View File

@@ -27,6 +27,8 @@ import java.util.concurrent.CopyOnWriteArrayList;
import javax.swing.SwingUtilities;
import com.github.boukefalos.jlibloader.Native;
/**
* JIntellitype A Java Implementation for using the Windows API Intellitype
* commands and the RegisterHotKey and UnRegisterHotkey API calls for globally
@@ -90,34 +92,9 @@ public final class JIntellitype implements JIntellitypeConstants {
* calling.
*/
private JIntellitype() {
try {
// Load JNI library
System.loadLibrary("JIntellitype");
} catch (Throwable exLoadLibrary) {
try {
if (getLibraryLocation() != null) {
System.load(getLibraryLocation());
} else {
String jarPath = "com/melloware/jintellitype/";
String tmpDir = System.getProperty("java.io.tmpdir");
try {
String dll = "JIntellitype.dll";
fromJarToFs(jarPath + dll, tmpDir + dll);
System.load(tmpDir + dll);
} catch (UnsatisfiedLinkError e) {
String dll = "JIntellitype64.dll";
fromJarToFs(jarPath + dll, tmpDir + dll);
System.load(tmpDir + dll);
}
}
} catch (Throwable exAllFailed) {
throw new JIntellitypeException(
"Could not load JIntellitype.dll from local file system or from inside JAR", exAllFailed);
}
}
initializeLibrary();
this.keycodeMap = getKey2KeycodeMapping();
Native.load("com.github.boukefalos", "jlibintellitype");
initializeLibrary();
this.keycodeMap = getKey2KeycodeMapping();
}
/**

View File

@@ -1,29 +0,0 @@
###################################################################
# #
# Copyright 2006 Melloware Inc #
# #
# http://www.melloware.com #
# #
###################################################################
log4j.rootLogger=DEBUG,stdout
########################################################################
#
# Appenders
#
########################################################################
#### Appender writes to console
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{MM/dd/yyyy HH:mm:ss} %-5p - [%C{1}.%M:%L] %m %n
#### jukes.log
log4j.appender.MELLOWARE = org.apache.log4j.FileAppender
log4j.appender.MELLOWARE.file = ${user.home}/.jintellitype/jintellitype.log
log4j.appender.MELLOWARE.layout = org.apache.log4j.PatternLayout
log4j.appender.MELLOWARE.layout.conversionPattern = %d{MM/dd/yyyy HH:mm:ss} %-5p - [%C{1}.%M:%L] %m %n
log4j.appender.MELLOWARE.append = false